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

2016-05-22 20:50 评论 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
转载请注明出处: https://teachcourse.cn/1764.html ,谢谢支持!

资源分享

分类:Java基础 标签:
AI Code Review 自动化接入实战:30分钟给项目装上智能审查 AI Code Review 自动化接入实
Ubuntu系统ERROR 2002 (HY000) Can not connect to local MySQL server through socket varrunmysqldmysqld Ubuntu系统ERROR 2002 (H
你知道,哪些即时通信平台? 你知道,哪些即时通信平台?
Android Studio运行时自带签名配置过程详解 Android Studio运行时自带签名

发表评论

呲牙 憨笑 坏笑 偷笑 色 微笑 抓狂 睡觉 酷 流汗 鼓掌 大哭 可怜 疑问 晕 惊讶 得意 尴尬 发怒 奋斗 衰 骷髅 啤酒 吃饭 礼物 强 弱 握手 OK NO 勾引 拳头 差劲 爱你

表情