A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 1002865186 中级黑马   /  2012-3-25 20:16  /  1740 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于多态还有些不清楚,求教一下,Java中多态定义是什么?特点是什么?为什么要用多态?

1 个回复

倒序浏览
本帖最后由 和心愿 于 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();//可以泡美眉了
                 
        }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马