请看下列代码:
public abstract class A {
abstract void a1();
void a2() { }
}
class B extends A {
void a1() { }
void a2() { }
}
class C extends B {
void c1() { }
}和
A x = new B();
C y = new C();
A z = new C();下列选项中属于多态形式调用方法的是:( )
x.a2();
z.a2();
z.c1();
y.c1();
多态方法的显著表现:一个实例方法通过不同的类重写,产生不同的逻辑。
z.c1();和y.c1();排除,他们的实例都是C类产生,c1方法是C类定义的,所以不是多态。
z.a2是多态,因为z是C类产生的,但z.a2调用的是B的重写方法a2
x.a2是多态,因为x是B类产生的,但b.a2调用的是B的重写方法a2
z.c1();和y.c1();排除,他们的实例都是C类产生,c1方法是C类定义的,所以不是多态。
z.a2是多态,因为z是C类产生的,但z.a2调用的是B的重写方法a2
x.a2是多态,因为x是B类产生的,但b.a2调用的是B的重写方法a2