下面程序中输出*******C*******有点不理解的地方是程序的执行顺序我大概画了个图问题是执行到newcircle("C").paint()的时候,发现circle里面没有paint方法,那么是如何最终输出C的呢?...
下面程序中输出*******C*******有点不理解的地方是程序的执行顺序我大概画了个图
问题是执行到new circle("C").paint()的时候,发现circle里面没有paint方法,那么是如何最终输出 C 的呢?
package pe201101;
abstract class Shape{
public Shape(String name){
this.name = name;
}
abstract void paint();
String getName(){
return this.name;
}
final String name;
};
class Ellipse extends Shape{
public Ellipse(String name){
super(name);
}
void paint(){
System.out.println(getName());
}
};
class Circle extends Ellipse{
public Circle(String name){
super(name);
}
};
class Diagram{
private Shape shapes[] = new Shape[2];
public void drawAShape(Shape shape){
shape.paint();
}
void drawShapes(){
shapes[0] = new Circle("C");
drawAShape(shapes[0]);
}
}
public class java {
public static void main(String[] args) {
Diagram diagram = new Diagram();
diagram.drawShapes();
}
}
展开