abstract class Shape{
final int b = 20;
public void display(){
System.out.println("This is display method");
}
abstract public void calculateArea();
}
class Rectangle extends Shape{
public static void main(String args[]){
Rectangle obj = new Rectangle();
obj.display();
//obj.b=200;
}
}
当我执行此代码时,它输出“This is display method”但在子类I中为子类创建对象并调用父类方法。为什么要调用父类方法。
谢谢。
答案 0 :(得分:3)
1)b
在父类中是final
。你无法改变价值。你会在这里得到编译错误。
2)子类中没有方法public void calculateArea()
。你也会在这里得到编译错误
3)在您的代码中,方法void display()
未被覆盖
答案 1 :(得分:0)
编译吗? (伊利亚完全正确)
顺便说一下,它调用了父方法,因为你没有在子类中重写它。
abstract class Shape {
[...]
public void display() { System.out.println("Parent"); }
}
public class Rectangle extends Shape {
[...]
@Override
public void display() { System.out.println("Child"); }
public static void main(String[] args)
{
new Rectangle().display();
}
}
输出:
Child
答案 2 :(得分:0)
o / p没有错。 shape的公共方法是可访问的 长方形 http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html