黑马程序员技术交流社区

标题: 什么是多态? [打印本页]

作者: czhczhczh    时间: 2016-1-10 20:46
标题: 什么是多态?
什么是多态?
作者: 洋葱头头    时间: 2016-1-10 21:06
父类引用指向子类实例 是为多态 实为为了实例化接口与抽象类
作者: 愿随风丶飘雪    时间: 2016-1-11 14:14
顾名思义,就是多种状态么,父类也可以转向子类
作者: teng13114    时间: 2016-1-11 17:14
这一个知识点,我学的也不太好。
作者: kmustfeng    时间: 2016-1-11 17:16
2L的解答不错,学习了
作者: 542826323    时间: 2016-1-11 18:42
大神到处有呀,只要大家认真学习就会牢牢掌握住。
作者: yehua1026    时间: 2016-1-11 21:54
6666666666666
作者: n_Nie1991    时间: 2016-1-11 23:20
事物存在的多种形态
1,要有继承关系
2,要有方法重写
3,要有父类引用指向子类对象
作者: jasonbourne    时间: 2016-1-12 21:34
猫和狗都是动物,我说我现在要创建一只猫,
作者: wuzeshui    时间: 2016-1-12 21:48
比如有一个父类superClass,它有2个子类subClass1,subClass2。superClass有一个方法 func(),两个子类都重写了这个方法。那么我们可以定义一个superClass的引用obj,让它指向一个子类的对象,比如superClass obj = new subClass1();那么我们调用obj.func()方法时候,会进行动态绑定,也就是obj它的实际类型的func()方法,即subClass1的func()方法。同样你写superClass obj = new subClass2();obj.func()其实调用的是subClass2的func()方法。这种由于子类重写父类方法,然后用父类引用指向子类对象,调用方法时候会进行动态绑定,这就是多态。多态对程序的扩展具有非常大的作用,比如你要再有一个subClass3,你需要改动的东西会少很多,要是使用了配置文件那就可以不动源代码了。
作者: jasonbourne    时间: 2016-1-12 22:07

public interface Animal{   //现在有一个动物的接口,有一个吃的抽象方法
        abstract void eat();
}
public class Cat implements Animal{  //猫这个类实现了动物接口
        public void eat(){
                System.out.println("我是吃鱼的猫");
        }
}
public class Dog implements Animal{ //狗这个类也实现了动物接口
        public void eat(){
                System.out.println("我是吃骨头的狗");
        }
}

public class Demo {
        public static void main(String[] args) {
                Animal a = new Cat();  //这里父类的引用指向了子类,就是多态的体现
                a.eat();
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2