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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 追逐 高级黑马   /  2014-3-15 14:33  /  779 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
如果想调用猫的特有方法时,如何操作?
强制将父类的引用。转成子类类型。向下转型

千万不要出现这样的操作。就是将父类对象转成子类类型。
我们能转换的是父类指向了子类的对象是时,该应用可以被提升。也可以强制转换
多态自始至终都是子类对象在做着变化。
*/
//建立一个动物类
abstract class Animal {
        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("拱地");
        }
       
}

//运行类
class ZhuanXingDemo {
        public static void main(String[] args) {
                Animal c = new Cat();
                Animal d = new Dog();
                Animal p = new Pig();
                funEat(c);
                funEat(d);
                funEat(p);
        }
       
        //写一个函数可以输出子类调用父类的函数内容
        public static void funEat(Animal a) { //Animal a = new Cat(Dog, Pig)();
                a.eat();
               
                if(a instanceof Cat) { //如果传进来的数据属于猫类型。就通过关键字instanceof判断
                        Cat c = (Cat)a;
                        c.catchMouse();
                } else if(a instanceof Dog) { //如果传进来的数据属于狗类型。就通过关键字instanceof判断
                        Dog g = (Dog)a;
                        g.kanJia();
                } else if(a instanceof Pig) {
                        Pig p = (Pig)a;
                        p.gongDi();
                }
               
        }
       
}

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

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