1.继承中构造方法的特点
1.注意:创建子类对象,先初始化父类
2.原因:子类构造中(子类所有构造)第一行默认会有一个super(),不写也有
3.super():代表的是父类无参构造
public class Zi extends Fu{
public Zi(){
//super(); //父类无参构造,不写也会执行
System.out.println("我是子类中的无参构造");
}
public Zi(int num){
super();
}
}
2.super和this的具体使用
2.1 super的具体使用
1.概述:super关键字代表的是父类引用
2.作用:在子类中调用父类成员(构造,成员变量,非静态成员方法)
3.使用位置:在子类中使用
4.使用:
a.调用父类构造:在子类构造中写
super()调用父类无参构造
super(实参)调用父类有参构造
b.调用父类成员变量:
super.变量名
c.调用父类成员方法:
super.方法名(实参)
public class Fu{
int num = 100;
public Fu(){
System.out.println("我是父类中的无参构造");
}
public Fu(int num){
System.out.println("我是父类中的有参构造");
}
public void method(){
System.out.println("我是父类中的method方法");
}
}
public class Zi extends Fu{
int num = 10;
public Zi(){
//super();//父类无参构造
System.out.println("我是子类中的无参构造");
}
public Zi(int num){
super(10000);
}
@Override
public void method(){
System.out.println(num);//子类的
System.out.println(super.num);//父类中的num
super.method();//父类中的method方法
System.out.println("我是子类中的method方法");
}
}
public class Test01 {
public static void main(String[] args) {
Zi zi = new Zi();
System.out.println("===============");
zi.method();
System.out.println("===================");
Zi zi1 = new Zi(10);
}
}
除了调用父类构造方法需要在子类的构造中写,其他的都应该在子类的方法中去使用super调用父类其他成员
2.2 this的具体使用
1.概述:代表的是当前对象-> 哪个对象调用的this所在的方法,this代表哪个对象
2.作用:区分重名成员变量和局部变量
this.后面的一定是成员变量
3.使用:
a.调用当前对象的构造:在当前对象的构造中写:
this():调用当前对象的无参构造
this(实参):调用当前对象的有参构造
b.调用当前对象的成员变量:
this.成员变量
c.调用当前对象的成员方法:
this.方法名(实参)
1.this关键字在构造方法中使用,必须要在构造第一行
2.super关键字在构造方法中使用,也必须要在构造第一行
super和this不能同时在构造 中写出来的
3.利用构造方法赋
public class Teacher extends Employee{
public Teacher() {
}
public Teacher(String name, int age) {
super(name, age);
}
}