方法和变量在继承时的覆盖和隐藏问题

一 概念:

隐藏 :子类隐藏了父类的变量和方法,那么,子类不能访问父类被隐藏的变量或者方法,但是,将子类转换成父类,可以访问父类被隐藏的变量或者方法​

覆盖 :子类覆盖了父类的变量或者方法,那么,子类不能访问父类被覆盖的变量或者方法,将子类转换成父类后同样不能访问父类被覆盖的变量或者方法

二 JAVA中方法和变量在继承时的覆盖和隐藏规则:

       1.父类的实例变量和静态变量能被子类的同名变量隐藏

  2.父类的静态方法被子类的同名静态方法隐藏

  3.父类的实例方法被子类的同名实例变量覆盖

  还有几点需要注意的是:

  1.不能用子类的静态方法隐藏 父类中同样标示(也就是返回值 名字 参数都一样)的实例方法

  2.不能用子类的实例方法覆盖 父类中同样标示的静态方法

  3.这点儿请注意,就是变量只会被隐藏 不会被覆盖 ,无论他是实例变量还是静态变量,而且,子类的静态变量可以隐藏 父类的实例变量,子类的实例变量可以隐藏 父类的静态变量。

       4.隐藏和覆盖的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖的方法​

posted @ 2016-12-06 14:21  天涯海角路  阅读(147)  评论(0)    收藏  举报