面试题答案
一键面试abstract class Shape {
protected String color;
public Shape(String color) {
this.color = color;
}
public abstract void draw();
}
class Circle extends Shape {
public Circle(String color) {
super(color);
}
@Override
public void draw() {
System.out.println("绘制圆形,颜色:" + color);
}
}
class Rectangle extends Shape {
public Rectangle(String color) {
super(color);
}
@Override
public void draw() {
System.out.println("绘制矩形,颜色:" + color);
}
}
在多态调用过程中:
- 抽象类的成员变量:抽象类的成员变量通过继承机制被子类继承。当通过子类对象访问成员变量时,访问的是从抽象类继承过来的成员变量。在上述代码中,
Circle
和Rectangle
子类都继承了Shape
类的color
成员变量,在draw
方法中可以直接访问color
变量来展示形状的颜色。 - 抽象类的方法:抽象类中的抽象方法必须在子类中被实现,这是实现多态的关键。当通过父类引用指向子类对象,并调用抽象方法时,实际执行的是子类中重写的方法。例如,
Shape shape1 = new Circle("红色"); shape1.draw();
,这里shape1
虽然是Shape
类型,但实际指向Circle
对象,调用draw
方法时执行的是Circle
类中重写的draw
方法,输出 “绘制圆形,颜色:红色”。这就是多态的体现,同一个方法调用,根据对象的实际类型执行不同的行为。