1 /*
2
3 构造方法:方法名和类名必须相同,可以无参数,可以有参数,没有返回值
4
5 构造方法和一般方法的区别:
6
7 构造方法是在创建对象时,被调用,只执行一次
8
9 一般方法是对象创建完成之后,被对象调用,可以被多次调用
10
11 */
12
13
14
15 //定义一个Person类
16
17 public class Person{
18
19 private String name;
20
21 private int age;
22
23
24
25 //无参构造
26
27 public Person(){
28
29 }
30
31
32
33 //有参构造
34
35 public Person(String name , int age){
36
37 this(); //本类中调用构造方法使用this()
38 this.name = name;
39
40 this.age = age;
41
42 }
43
44 }
45
46
47
48 /*
49
50 this关键字,调用其他构造方法的语句必须定义在构造方法的第一行,初始化动作要先执行
51 成员变量和局部变量同名问题:在成员变量名前使用this.来区分成员变量和局部变量
52
53 */
54
55
56
57 public class Animal{
58
59 String name;
60
61 int age;
62
63 //无参构造
64
65 public Animal(){}
66
67 /*有参构造,给姓名初始化*/
68
69 public Animal(String name){
70
71 this.name = name;
72
73 }
74
75 /*有参构造,给姓名和年龄初始化*/
76
77 public Animal(String name , int age){
78
79 //由于已经初始化name,直接调用即可
80
81 this(name); //this()
82
83 this.age = age; //初始化年龄
84
85 }
86
87 }
88
89 /*
90
91 super关键字:
92
93 子类调用父类中的无参构造方法:super();
94
95 子类调用父类中的有参构造方法:super(参数列表);
96 当子类调用父类中的无参构造方法时,super()是隐式的,子类会继承父类的内容,子类初始化时,会先到父类中执行初始化动作
97
98 当子类调用父类中的有参构造方法时,super()语句必须显示,指定要访问父类有参数的构造方法
99
100 */
101
102 //定义一个父类
103
104 public class Fu{
105
106 int a = 1;
107
108 public Fu(){
109
110 System.out.println(a);
111 a = 2;
112
113 }
114
115 }
116
117 //定义一个子类
118
119 public class Zi{
120
121 public Zi(){
122
123 //super(); //调用父类的构造方法
124
125 System.out.println(a);
126
127 }
128
129 }