用子类声明父类的对象时参数及重写的函数访问问题
public class Test { public static void main(String [] args){ Base b = new Subclass(); System.out.println(b.x); System.out.println(b.method()); } } class Base{ int x = 2; int method(){ return x; } } class Subclass extends Base{ int x = 3; int method(){ return x; } }
结果:2 3
声明变量b后,你能访问的对象部分只是Base的部分; Subclass的特殊部分是隐藏的.这是因为编译器应意识到,e 是一个Base,而不是一个Subclass.但重写的方法除外。abstract和final相互排斥,前者专用于继承,后者禁止继承;抽象类中的抽象 方法不能为static静态方法不能被override,只是被隐藏(hidden)了。