黑马程序员技术交流社区

标题: 多态的弊端怎么理解? [打印本页]

作者: 鱼饵    时间: 2015-5-2 20:38
标题: 多态的弊端怎么理解?
提高了扩展性,但是只能使用父类的引用访问父类中的成员。有点蒙圈了希望大神给个细致点的解析。
abstract class Animal
{
        public abstract void eat();
}
class cat extends Animal
{
        public void eat()
        {
                System.out.println("吃鱼");
        }
        publci catchMouse()
        {
                System.out.println("抓老鼠");
        }
}
class Dog extends Animal
{
        public void eat()
        {
                System.out.println("吃骨头");
        }
        public void kanJia()
        {
                System.out.println("看家");
        }
}
class Pig extends Animal
{
        public void eat()
        {
                System.out.println("吃骨头");
        }
        public void gongDi()
        {
                System.out.println("拱地");
        }
}
class DuoTaiDemo
{
        public static void main(String[] args)
        {
                //Cat c = new Cat();
                //c.eat();
                //Dog d = new Dog();
                //d.eat();
                function(new Cat());
                function(new Dog());
                function(new Pig());
        }       
        public static void function(Animal a)// Animal a = new Cat();
        {
                a.eat();
        }

作者: 崔小可    时间: 2015-5-2 20:43
多态是父类的引用指向子类的对象,有向上转型和向下转型区分
作者: 江万锋    时间: 2015-5-2 20:58
多态主要体现在方法重载和方法的重写上,一般来说,多态的出现是为了弥补之前单一的方法调用,觉得就是为了方便扩展而出现的,如果你抹掉不用,就没有优缺点可言了。如果多态发挥的尽情的话,对于学习它或是使用它的人来说,是比较容易混淆的(因为只有开发人员才知道各个方法的具体用途),但可以减少很多冗余代码~~一般越高级的程序,对某一特性就发挥的越淋漓尽致
作者: 魔蝎座    时间: 2015-5-2 21:47
正准备看多态这一课,
作者: 鱼饵    时间: 2015-5-3 21:30
崔小可 发表于 2015-5-2 20:43
多态是父类的引用指向子类的对象,有向上转型和向下转型区分

感觉说的简单明了,不过我想问问那个“父类的引用”就是这几个字不太懂。父类的引用只的是什么?
作者: 弯曲/mg抛物☀    时间: 2015-5-3 21:42
鱼饵 发表于 2015-5-3 21:30
感觉说的简单明了,不过我想问问那个“父类的引用”就是这几个字不太懂。父类的引用只的是什么? ...

非静态方法的是调用子类的方法,静态的调用的是父类中的方法。
非静态编译看左边,运行看右边。
编译运行都看左边。
作者: 鱼饵    时间: 2015-5-3 21:46
弯曲/mg抛物☀ 发表于 2015-5-3 21:42
非静态方法的是调用子类的方法,静态的调用的是父类中的方法。
非静态编译看左边,运行看右边。
编译运行 ...

视频看的很细心嘛!!
作者: 弯曲/mg抛物☀    时间: 2015-5-3 21:48
嘿嘿,都看完了,知识很乱。还在整理。




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