一.摘要
子类继承父类,需要理解的两个概念:成员变量的隐藏和方法的重写
二.成员变量的隐藏
子类声明的成员变量名称和父类的一样(即使数据类型不同),在子类中隐藏了父类中声明的变量,可以使用子类继承的方法操作父类隐藏的成员变量。
- class DemoA{
- String x;//声明的父类的成员变量
- public void setX(String x){
- this.x=x;
- }
- public String getStringX(){
- return x;
- }
- }
- class DemoB extends DemoA{
- int x;//声明的子类的成员变量,名称和父类的double变量一样
- public int getX(){
- return x;
- }
- }
DemoB继承DemoA,在两个类中声明的成员变量名称一样,在子类DemoB隐藏了父类DemoA声明的变量,同时DemoB还可以操作继承父类的setX(double x)方法,它们之间的关系
- class Demo{
- public static void main(String[] args){
- DemoB demoB=new DemoB();
- demoB.x=1024;//给子类的成员变量x赋值,这里无法赋值给隐藏父类的x,都可以通过继续的方法操作隐藏的x
- System.out.println("隐藏父类同一名称的成员变量:"+demoB.getX());
- demoB.setX("zhaolinit.com");
- System.out.println("父类方法操作隐藏的成员变量:"+demoB.getStringX());
- }
- }
三.方法的重写
重写父类声明的方法,不再执行父类声明的方法(除使用super外)。
- class DemoA{
- public void start(){
- System.out.println("父类的非静态方法。。。");
- }
- }
- class DemoB extends DemoA{
- /**
- *重写父类start方法,即不再执行父类的start()方法
- *
- */
- @Override
- public void start(){
- System.out.println("子类的非静态方法。。。");
- }
- }
- class Demo{
- public static void main(String[] args){
- new DemoB();//最后只执行子类的start()方法,即输出“子类的非静态方法。。。”
- //使用关键字super,先执行父类的start()方法,再执行子类的start()方法,即输出“父类的非静态方法。。。”和“子类的非静态方法。。。”
- }
- }
你可能感兴趣的文章
来源:TeachCourse,
每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/1764.html ,谢谢支持!
转载请注明出处: https://www.teachcourse.cn/1764.html ,谢谢支持!