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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//多态技术的引出。解决什么问题?程序扩展性的问题。

//描述Dog
class Dog extends Animal
{
        public void eat()
        {
                System.out.println("骨头");
        }
        public void lookHome()
        {
                System.out.println("看家");
        }
}

//描述猫
class Cat extends Animal
{
        public void eat()
        {
                System.out.println("鱼");
        }
        public void catchMouse()
        {
                System.out.println("抓老鼠");
        }
}
//进行抽取。将共性的功能抽取到父类Animal中。
abstract class Animal
{
        public abstract void eat();
}



class DuoTaiDemo
{
        public static void main(String[] args)
        {
                Dog d = new Dog();
//                d.eat();
                method(d);

                Cat c = new Cat();
                method(c);
        }
        /*
        发现,每多一个动物,都需要为这个动物单独定义一个功能,
        让这个动物的对象去做事。
        这个程序扩展性就很差。
        如何提高这个扩展性呢?
        发现既然是让动作去eat,无论是dog,还是cat,
        eat是它们共性,干脆,将eat进行抽取。抽取到父类Animal中。

        Dog是Animal中的一种。
        Dog d = new Dog();
        Animal a = new Dog();
        Cat c = new Cat();
        Animal aa = new Cat();
        */
        //只要建立animal的引用就可以接收所有的dog cat对象进来。让它们去eat。
        //提高了程序的扩展性。
        public static void method(Animal a)
        {
                a.eat();
        }

        /*
        //接收Dog,让dog做事。
        public static void method(Dog d)
        {
                d.eat();
        }
        //接收Cat,让cat做事。
        public static void method(Cat c)
        {
                c.eat();
        }
        */

}


5 个回复

正序浏览
找共性。。
回复 使用道具 举报
用本类能完成的可以不必去用多态
回复 使用道具 举报
用本类能完成的可以不必去用多态
回复 使用道具 举报
我一直纠结啊,哪个程序扩展性我咋没看出来啊,我就是感觉它太麻烦类
回复 使用道具 举报
不就是多种表现形态
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马