继承
是多态的前提
主要解决:共性抽取,定义父类
特点:子类可拥有父类的内容,子类还可拥有自己的内容
在继承中,子类就是父类(父类有的我也有)
图示
重名
父子类继承关系中成员变量重名,创建子类对象有两种方式
1、直接通过子类对象访问成员变量,等号左边是谁,优先用谁
public class Emploee {
public void method(){
System.out.println("父类方法执行");
}
}
public class Teacher extends Emploee {
public void method(){
System.out.println("执行子类方法");
}
}
public static void main(String[] args) {
Teacher teacher=new Teacher();//创建teacher对象
teacher.method();//teacher继承父类方法后可调用
}
执行结果
2、间接通过子类成员方法访问成员变量,子类父类都没有编译报错
该方法属于谁,优先用谁,没有则向上找
public void methodfu(){
System.out.println("父类方法");
}
public void methodzi(){
System.out.println("子类方法");
}
fu.methodfu();
zi.methodzi();
zi.methodfu();//该方法属于父类方法,得出父类方法
运行结果
区分三种变量重名
局部变量:直接写变量名
子类成员变量:this.成员变量
父类成员变量:super.成员变量
public class Fu {
int num=2;
}
public class Zi extends Fu{
int num=3;
public void method(){
int num=4;
System.out.println(num);
System.out.println(this.num);
System.out.println(super.num);
}
}
运行结果
成员方法访问的特点
在父子类继承关系中,创建对象是谁,优先用谁,如果没有,向上找。
public class Fu {
public void method(){
System.out.println("执行父类的方法");
}
}
public class Zi extends Fu {
public void method(){
System.out.println("执行子类方法");
}
}
public class Demo01ExtendMethod {
public static void main(String[] args) {
Zi zi=new Zi();
zi.method();//创建子类对象,优先用子类方法
}
}
无论成员方法还是成员变量,都向上找父类,不向下找子类
public class Fu {
public void method(){
System.out.println("执行父类的方法");
}
}
public class Zi extends Fu {
}
运行结果
网友评论