成员变量的隐藏和方法的重写

2016-05-22 20:50 阅读 5,518 次 评论 0 条

一.摘要

子类继承父类,需要理解的两个概念:成员变量的隐藏和方法的重写

二.成员变量的隐藏

子类声明的成员变量名称和父类的一样(即使数据类型不同),在子类中隐藏了父类中声明的变量,可以使用子类继承的方法操作父类隐藏的成员变量。

  1. class DemoA{  
  2.       String x;//声明的父类的成员变量  
  3.   
  4.       public void setX(String x){  
  5.               this.x=x;  
  6.       }  
  7.       public String getStringX(){  
  8.              return x;  
  9.       }  
  10. }  
  1. class DemoB extends DemoA{  
  2.       int x;//声明的子类的成员变量,名称和父类的double变量一样  
  3.         
  4.       public int getX(){  
  5.             return x;  
  6.       }  
  7. }  

DemoB继承DemoA,在两个类中声明的成员变量名称一样,在子类DemoB隐藏了父类DemoA声明的变量,同时DemoB还可以操作继承父类的setX(double x)方法,它们之间的关系

  1. class Demo{  
  2.       public static void main(String[] args){  
  3.               DemoB demoB=new DemoB();  
  4.           demoB.x=1024;//给子类的成员变量x赋值,这里无法赋值给隐藏父类的x,都可以通过继续的方法操作隐藏的x  
  5.           System.out.println("隐藏父类同一名称的成员变量:"+demoB.getX());  
  6.           demoB.setX("zhaolinit.com");  
  7.               System.out.println("父类方法操作隐藏的成员变量:"+demoB.getStringX());  
  8.       }  
  9. }  

三.方法的重写

重写父类声明的方法,不再执行父类声明的方法(除使用super外)。

  1. class DemoA{  
  2.       public void start(){  
  3.              System.out.println("父类的非静态方法。。。");  
  4.       }  
  5. }  
  1. class DemoB extends DemoA{  
  2.       /** 
  3.        *重写父类start方法,即不再执行父类的start()方法 
  4.        * 
  5.        */  
  6.        @Override  
  7.        public void start(){  
  8.               System.out.println("子类的非静态方法。。。");  
  9.        }  
  10. }  
  1. class Demo{  
  2.       public static void main(String[] args){  
  3.              new DemoB();//最后只执行子类的start()方法,即输出“子类的非静态方法。。。”  
  4.          //使用关键字super,先执行父类的start()方法,再执行子类的start()方法,即输出“父类的非静态方法。。。”和“子类的非静态方法。。。”  
  5.       }  
  6. }  

你可能感兴趣的文章

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/1764.html ,谢谢支持!

资源分享

分类:Java基础 标签:
Linux自动化脚本命令 Linux自动化脚本命令
Eclipse导入另一台电脑下的Android项目style文件出现错误的原因 Eclipse导入另一台电脑下的And
Android Debug Bridge之Shell命令 Android Debug Bridge之Shel
浅谈JDK和JRE 浅谈JDK和JRE