黑马程序员技术交流社区

标题: 关于多态的问题,引用数据类型什么时候作为参数使用 [打印本页]

作者: Dijkstra    时间: 2014-4-10 22:05
标题: 关于多态的问题,引用数据类型什么时候作为参数使用
本帖最后由 Dijkstra 于 2014-4-10 22:14 编辑

class DuoTaiDemo
{
        public static void main(String[] args)
        {
                //建立猫的对象,调用吃功能
                eat( new Cat());        
                //建立狗对象,调用吃的功能               
                eat(new Dog());                          //这样创建对象的方式,不明白呀
                //建立鸟对象,调用吃的功能
        eat(new Bird());
                //建立猪对象,调用吃的功能
        eat(new Pig());
        }
        //定义猫吃的方法,没有返回值类型,未知数就是猫
        public static void eat(Cat c){            //这里把Cat c作为引用类型传入,这样使用引用类型的情况还有哪些,
           c.eat();
        }
        //定义狗吃的方法,没有返回值类型,未知数就是狗
        public static void eat(Dog d){
          d.eat();
        }
        //定义鸟吃的方法,没有返回值类型,未知数就是鸟
        public static void eat(Bird b){
          b.eat();
        }
        //定义猪吃的方法,没有返回值类型,未知数就是猪
        public static void eat(Pig p){
          p.eat();
        }
}
作者: 程序爱好者    时间: 2014-4-10 23:35
我也是新手 。我也不知道我说的对不对  
eat( new Cat());   
就相当于   Cat c=new Cat();   eat( c );     
下面的同理。
Cat c 作为参数的这个应该还有他父类对象作为参数吧!


作者: syusikoku    时间: 2014-4-10 23:58
那是类型的转换你没有搞明白:
  父类的引用指向了子类实例对象。就是说我使用一个动物可的接收一个猫的实例对象。当然这个它们要有继承关系
  然后我如果使用猫这个实例来来指向上面创建的父类的引用。这个时候动物是父类嘛。要把它给当成猫来使用。就要进行强制类型转换了。
作者: Dijkstra    时间: 2014-4-11 00:22
syusikoku 发表于 2014-4-10 23:58
那是类型的转换你没有搞明白:
  父类的引用指向了子类实例对象。就是说我使用一个动物可的接收一个猫的实 ...

谢谢,窝在看一下类型转换这一块
作者: 请备注    时间: 2014-4-11 10:21
你这个代码不完整吧,我都没找到eat()方法。Cat c = new Cat();
                                                              eat(c);    //这2句简写如下
                                         eat(new Cat());




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2