分享

java 子类继承父类

 藏经阁_苍穹 2016-03-28
1.同名的实例方法被覆盖 ,同名的静态方法被隐藏,child类的getName实例方法覆盖了parent的getName实例方法,chind的getKind方法隐藏了parent类的getKind方法
2.隐藏 和覆盖 的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖 的方法
3.如果需要访问父类被隐藏 的实例变量,加上super就好了,比如访问父类的name,写上super.name就好了






1.不能用子类的静态方法隐藏 父类中同样标示(也就是返回值 名字 参数都一样)的实例方法
2.不能用子类的实例方法覆盖 父类中同样标示的静态方法
3.这点儿请注意,就是变量只会被隐藏 不会被覆盖,无论他是实例变量还是静态变量,而且,子类的静态变量可以隐藏父类的实例变量,子类的实例变量可以隐藏 父类的静态变量

2:

2009-09-14 walsh (资深程序员)

Java代码  收藏代码
  1. class Foo {  
  2.     public int a;  
  3.   
  4.     public Foo() {  
  5.         a = 3;  
  6.     }  
  7.   
  8.     public int addFive() {  
  9.         a += 5;  
  10.         return a;  
  11.     }  
  12.   
  13.     public int getA() {  
  14.         return a;  
  15.     }  
  16. }  
  17.   
  18. public class Bar extends Foo {  
  19.     public int a;  
  20.   
  21.     public Bar() {  
  22.         a = 8;  
  23.     }  
  24.   
  25.     public int addFive() {  
  26.         this.a += 5;  
  27.         return a; 
  28.     } 
  29.  public int getA() {  
  30.         return a;  
  31.     }  
  32.   
  33.     public static void main(String[] args) {  
  34.         Foo foo = new Bar();  
  35.         //调用的是子类中的方法  
  36.         System.out.println(foo.getA());  
  37.         //直接调用父类中的a  
  38.         System.out.println("Value: " + foo.a);  
  39.         //调用的是子类中的方法  
  40.         System.out.println(foo.addFive());  
  41.           
  42.     }  

  43. 输出结果: 
    8 
    Value: 3 
    13 


    注意:在Java中重写指的是方法的重写,而不是属性的重写,还有多态也只是方法的多态 ,没有属性的多态。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多