黑马程序员技术交流社区

标题: 多态到底如何理解 [打印本页]

作者: IPvL9h    时间: 2015-10-30 23:40
标题: 多态到底如何理解
事到如今,对于多态的理解还是很迷茫。

到底什么时候应该用多态?什么时候用?


上课一有关于多态的创建方式,虽然懂得如何创建,但总是感到心里没有底。


求解答

作者: 260744042    时间: 2015-10-31 13:46
1、有继承关系;
2、子类有重写父类的方法;
3、父类引用指向子类对象,并调用这些重写的方法时,就产生了多态
作者: xiexie758    时间: 2015-10-31 18:24
首相想到有前提:有子类,或者被实现了。
其次:多态就父类或者接口的引用(Person(父类)  p(p是引用)=new Student()(子类))直接指向子类新建的实例。
限制:就是不能调用子类本身特有的方法。
作者: championjx    时间: 2015-11-2 13:39
本帖最后由 championjx 于 2015-11-2 13:57 编辑

我是这么理解的
话说有愚公要移山,假设没人帮助愚公,那他挂了的时候也没移走,但是他有无穷尽的子孙也在移山,而随着时代的发展,使用的工具也在进化

class 愚公移山
{
        public static void main(String[] args)
        {
                愚公 愚 = new 愚公();
                //愚公自己移山
                人工移山(愚);
                //愚公挂了,他儿子帮着移山,新工具
                愚 = new 儿子();
                人工移山(儿子);
                //愚公儿子挂了,孙子接着移山,新工具
                愚 = new 孙子();
                人工移山(孙子);
                //谁也不知道要几辈,用何种方法才能移走山,所以不管接下来谁移山,用什么方法,都用愚公来指向                //上文中的“几辈,何种方法”就是功能的扩展,可能是已存在的,正在实现的,未想好的需求

               
        }

        public static void 人工移山(愚公 愚公)
        {
                .....
        }
}
//接口:移山功能
interface 移太行山
{
        public abstract void 移山();
}

class 愚公  implements 移太行山
{
        public void 移山()
        {
                System.out.println("用小铲子");
        }
}

class 儿子 extends 愚公 implements 移太行山
{
        public void 移山()
        {
                System.out.println("用大锄头");
        }
}

class 孙子 extends 儿子 implements 移太行山
{
        public void 移山()
        {
                System.out.println("挖掘机");
        }
}




作者: 冰霜之卅    时间: 2015-11-2 20:53
多态就是说话说一半 ,,,等你问道跟前了问他 他才给你说是什么。。(很贱吧- -)。
作者: 北极的男娃    时间: 2015-11-2 21:24
篮子的那个例子很好吧 一般都用在参数声明上  
作者: 小小鑫    时间: 2015-11-2 21:59
父类引用指向子类对象
作者: Sayman    时间: 2015-11-2 23:01
爸爸用儿子的东西
作者: zhengtuwl    时间: 2015-11-2 23:15
看回复,我怎么感觉整反了?




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