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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鱼饵 中级黑马   /  2015-5-2 20:38  /  745 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

提高了扩展性,但是只能使用父类的引用访问父类中的成员。有点蒙圈了希望大神给个细致点的解析。
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();
        }

7 个回复

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

感觉说的简单明了,不过我想问问那个“父类的引用”就是这几个字不太懂。父类的引用只的是什么?
回复 使用道具 举报
鱼饵 发表于 2015-5-3 21:30
感觉说的简单明了,不过我想问问那个“父类的引用”就是这几个字不太懂。父类的引用只的是什么? ...

非静态方法的是调用子类的方法,静态的调用的是父类中的方法。
非静态编译看左边,运行看右边。
编译运行都看左边。
回复 使用道具 举报
弯曲/mg抛物☀ 发表于 2015-5-3 21:42
非静态方法的是调用子类的方法,静态的调用的是父类中的方法。
非静态编译看左边,运行看右边。
编译运行 ...

视频看的很细心嘛!!
回复 使用道具 举报
嘿嘿,都看完了,知识很乱。还在整理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马