本帖最后由 和心愿 于 2012-3-25 20:44 编辑
package reflection;
//多态就是父类变量指向子类对象,编译类型和运行类型不一样;
/*定义一个父类*/
class Car //父类 :车
{
void run()//车都有跑的方法
{
System.out.println("车跑");
}
}
//定义子类继承父类
class Aodi extends Car//奥迪车
{
@Override
void run()
{
System.out.println("奥迪跑的拉风");//覆写父类run方法
}
void pmm()
{
System.out.println("泡美眉");//子类特有方法(开奥迪才能泡美眉)
}
}
public class TestShow {
public static void main(String[] args) {
Car car = new Car();//编译类型是Car运行类型也是Car,此时不存在
car.run();
Aodi aodi = new Aodi();//编译类型与运行类型一样不存在多态
aodi.run();
aodi.pmm();//子类可以调用自己特有的方法
Car aodicar = new Aodi();/*编译类型是Car运行类型是Aodi存在多态*/
car.run();//此时子类覆写了父类的方法,的打印结果是“奥迪跑的拉风”
//car.pmm()编译通不过,父类变量不能调用子类的特有方法若调用需强转
// (可以理解成一个低调的哥们有奥迪的实质却做出普通的样子)
Aodi ad = (Aodi)aodicar;
ad.pmm();//可以泡美眉了
}
}
|