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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IPvL9h 中级黑马   /  2015-10-30 23:40  /  850 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

事到如今,对于多态的理解还是很迷茫。

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


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


求解答

8 个回复

倒序浏览
1、有继承关系;
2、子类有重写父类的方法;
3、父类引用指向子类对象,并调用这些重写的方法时,就产生了多态
回复 使用道具 举报
首相想到有前提:有子类,或者被实现了。
其次:多态就父类或者接口的引用(Person(父类)  p(p是引用)=new Student()(子类))直接指向子类新建的实例。
限制:就是不能调用子类本身特有的方法。
回复 使用道具 举报
本帖最后由 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("挖掘机");
        }
}



回复 使用道具 举报
多态就是说话说一半 ,,,等你问道跟前了问他 他才给你说是什么。。(很贱吧- -)。
回复 使用道具 举报
篮子的那个例子很好吧 一般都用在参数声明上  
回复 使用道具 举报
父类引用指向子类对象
回复 使用道具 举报
Sayman 中级黑马 2015-11-2 23:01:06
8#
爸爸用儿子的东西
回复 使用道具 举报
看回复,我怎么感觉整反了?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马