- 构造函数的基本应用
-
1 package cn.sasa.demo1;
2
3 public class Computer {
4
5 //构造函数,可以在创建对象时,为一些变量给定初始值
6 //如果不写构造函数,编译时默认会添加一个空参的构造函数
7 //public Computer() {}
8
9 //如果写了构造函数,那么编译时不会再添加空参的构造函数
10 //在new对象时,因为没有空参的构造函数,所以在new的时候,必须调用有参的构造函数
11 public Computer(String name) {
12 this.name = name;
13 }
14
15 //构造函数可以重载
16 public Computer(String name, double price) {
17 this.name = name;
18 this.price = price;
19 }
20
21 //构造函数可以为成员变量赋值,但只有在new的时候执行一次,之后不会再执行
22 //所以还需要get和set方法,使这之后还可以修改变量值。
23 private String name;
24 public String getName() {
25 return this.name;
26 }
27 public void setName(String name) {
28 this.name = name;
29 }
30
31 private double price;
32 public double getPrice() {
33 return this.price;
34 }
35 public void setPrice(double price) {
36 this.price = price;
37 }
38
39 }
1 package cn.sasa.demo1;
2
3 public class Test {
4 public static void main(String[] args) {
5 //因为没有空参的构造函数,所以必须调用有参的构造函数。
6 //new的"()",就是在调用构造函数
7 Computer com = new Computer("华硕");
8 System.out.println(com.getName() + "======" + com.getPrice());
9 com.setName("联想");
10 System.out.println(com.getName());
11
12 Computer com1 = new Computer("宏基" , 5000);
13 System.out.println(com1.getName() + "======" + com1.getPrice());
14 }
15 }
- this()和super()
- this()调用的是本类的构造函数,super()调用的是父类的构造函数
- this()和super()在同一个构造方法中必须只有其中一个,并且放在第一行
![](https://img2018.cnblogs.com/blog/1426165/201811/1426165-20181123110635108-434402936.png)
1 package cn.sasa.demo1;
2
3 public class NoteComputer extends Computer{
4 public NoteComputer() {
5 //子类继承父类,在构造函数的第一行默认添加了super()
6 //但是父类重写了构造方法,没有空参的构造方法,就会报错
7 //解决方法是用super()调用父类的其中一个构造方法
8 super("");
9 }
10
11 public NoteComputer(boolean isTouch) {
12 //this()调用的是本类的构造方法
13 this();
14 this.IsTouchScreen = isTouch;
15 }
16
17 private boolean IsTouchScreen;
18
19 public boolean getIsTouchScreen() {
20 return this.IsTouchScreen;
21 }
22
23 public void setIsTouchScreen(boolean isTouch) {
24 this.IsTouchScreen = isTouch;
25 }
26 }