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

© 磊弟哥哥 中级黑马   /  2014-9-15 10:57  /  1004 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
多态及其拓展性
多态:可以理解为事物存在的多种形态

动物:猫  狗
猫x=new 猫();
狗x=new 狗();


1.多态的体现
  父类的引用指向自己子类的对象
  父类引用接收自己子类的对象
2.多态的前提
  必须是类与类之间有关系,要么继承要么实现
  而且要存在覆盖
3.多态的好处
  提高了程序的拓展性
4.多态的弊端
  提高了拓展性但只能使用父类的引用访问父类成员
*/
class Demo
{
        public static void main(String []args)
        {
                /*
                Cat c=new Cat();//1
                Dog d=new Dog();
                c.eat();
                d.eat();



                Cat c1=new Cat();//2
                Cat c2=new Cat();
                function(c1);
                function(c2);
                function(new Dog());
                function(new Pig());
                */

                /*
                一个对象具有多种属性  看第一条
                Animal c=new Cat();
                c.eat();
                */
               
               

                function(new Cat());//3
                function(new Dog());
                function(new Pig());

               
               
        }
        /*
        public static void function(Cat c)//2
        {
                c.eat();
        }
        public static void function(Dog d)
        {
                d.eat();
        }
        public static void function(Pig p)
        {
                p.eat();
        }
        */

        /*
        提高了代码的扩展性
        */

        public static void function(Animal a)//3   该句相当于Animal a=new Cat();
        {
                a.eat();
        }
}
abstract class Animal
{
        public abstract void eat();//体系的基本功能,向上抽取出来的,里面定义的一定是体系的共有功能
}
class Cat extends Animal
{
        public void eat()
        {
                System.out.println("吃鱼");
        }
        public void 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("拱地");
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马