一 继承中构造方法的访问特点
1.子类不能继承父类的构造方法,但是可以通过super调用.
2.子类构造方法的第一行,有一个默认的super();
不写也自动存在,即默认先访问父类中无参的构造方法,再执行自己.
3.如何访问父类的构造函数?
访问 父类的无参构造,第一行写super();(不写也行,会自动生成)
访问 父类的有参构造,必须手动书写super(形参,形参,..);
eg:
父类:
public class Person {
String name;
int age;
public Person() {
System.out.println("调用了父类Person的无参构造方法");
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
子类:
public class Student extends Person{
//无参构造
public Student() {
//第一行默认:子类构造方法中隐藏的super()会自动调用父类中的无参构造
super();
System.out.println("调用了子类Student的空参构造方法");
}
//有参构造
public Student(String name,int age) {
super(name,age); //这个需要手动写,不然默认这行就成super()了,调用的就成无参构造的了.
}
}
测试类:
//继承中构造方法的特点
public class Test {
public static void main(String[] args) {
//在创建对象时,没有给对象赋初值,没有参数时:
Student s = new Student();
System.out.println("-------------------------");
//在创建对象时,直接给对象赋值,有形参时
Student t = new Student("张三",18);
System.out.println(t.name + t.age);
}
}
运行结果:
调用了父类Person的无参构造方法
调用了子类Student的空参构造方法
-------------------------
张三18
二、 this和super使用总结
this:理解为一个变量,表示当前方法调用者的地址值;访问本类
super:代表父类存储空间;访问父类