java se继承

2020-02-09  本文已影响0人  起名字真难难难

继承

是多态的前提
主要解决:共性抽取,定义父类
特点:子类可拥有父类的内容,子类还可拥有自己的内容
在继承中,子类就是父类(父类有的我也有)


图示

重名

父子类继承关系中成员变量重名,创建子类对象有两种方式

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 {

}
运行结果
上一篇下一篇

猜你喜欢

热点阅读