简述继承、方法重写和抽象类如何支持多态性

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:36:21

简述下,如果定义一个父类对象a,但是创建一个子类对象赋值给a,那么a所调用的方法
如果是被子类重写过的,那么实现子类的重写的方法,如果不是被重写的,那么调用父类自己的,如果是子类有,而父类没有的,必须将a强转成子类,然后再调用,否则报错。

abstract class A
{
int a=12;
public abstract void test();
public void testA(){system.out.println("testA");}
}
class B extends A
{
int a=13;
public void test(){system.out.println("test");}
public void testA(){system.out.println("testB");}
}
class C extends A
{
int a=14;
public void test(){system.out.println("test1111");}
public void testC(){system.out.println("testC");}

}

A a1=new B();
A a2=new C();

a1.test();//输出 test
a1.testA();//输出testB
a2.test();//输出test1111
a2.testA();//输出testA
//a2.testC();//会报错
(C)a2.testC();//必须先强转,输出testC

//成员变量和成员方法不同,
system.out.println(a1.a);//输出12
system.out.println(a2.a);//输出12