方法重写的原则证明
原则:如果父类的方法返回值类型为引用类型,则子类的方法返回值类型要么与父类方法返回值类型相同,要么是父子方法返回值类型的子类。
采用反证法,代码如下:
解析:向上造型C c = new D(); 其中c对象的声明类为C类,所以C类告诉c对象有一个m()方法可以被调用,且返回值类型为B。而c对象的实际创建类是D类,所以m()方法的具体执行要看D类,D类告诉c对象m()方法的返回值类型为A。结果是子类接了一个父类,即有B b = new A();其中b对象声明类为B,B类告诉b对象有一个mb()方法可以被调用,b对象的实际创建类为A类,mb()方法具体执行看A类,而A类中没有mb()方法,无法执行,代码报错,证明上述重写原则正确。