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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 信仰年轻 中级黑马   /  2015-9-17 23:56  /  241 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package 主要内容;
/**
多态:可以理解为事物存在的多种体现形态

  人:男人,女人
动物:猫,狗

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

1、多态的体现
        父类的引用指向了自己的子类对象
        父类的引用也可以接受自己的子类对象
2、多态的前提
        必须是类与类之间有关系,要么继承,要么实现
        通常还有一个前提:存在覆盖
3、多态的好处
        多态的出现大大的提高了程序的扩展性
4、多态的弊端
        提高了扩展性,但是只能只要父类的引用访问父类中的成员
5、多态的应用

6、多态的出现代码中的特点(多态使用的注意事项)

*/
abstract class Animal//父类————抽象动物 吃  
{
        abstract void eat();
}
class Cat extends Animal//子类————猫
{
        void eat()//复写父类中的抽象功能
        {
                System.out.println("吃鱼");
        }
        public void catchMouse()//Cat特有的功能  
        {
                System.out.println("抓老鼠");
        }
}
class Dog extends Animal//子类————狗
{
        void eat()//复写父类中的抽象功能
        {
                System.out.println("吃骨头");
        }
        public void kanJia()//dog特有的功能  
        {
                System.out.println("看家");
        }
}
public class 多态
{
        public static void main(String[] args)
        {               
                //Animal a = new Cat();//类型提升。向上转型  
                //如果想要调用猫的特有方法,如何操作?
                //强制将父类的引用,转换成子类类型。向下转型
            //Cat c = (Cat)a;  
            //c.catchMouse();
            
                function(new Cat());//直接调用
                function(new Dog());               
        }
        public static void function(Animal a)//等同于Animal a=new Cat();
        {
                a.eat();
                if(a instanceof Cat)
                {
                        Cat c=(Cat)a;
                        c.catchMouse();
                }
                else if(a instanceof Dog)
                {
                        Dog c=(Dog)a;
                        c.kanJia();
                }
        }
}

0 个回复

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