黑马程序员技术交流社区

标题: 继承疑问 [打印本页]

作者: 凝聚    时间: 2013-11-16 14:34
标题: 继承疑问
本帖最后由 凝聚 于 2013-11-16 20:05 编辑

package test;

public class Nine2 {
        public static void main(String[] args) {
        fun(new cat());
        }
public static void fun(animal a)
{
a.jiao();        
}
}
abstract class animal
{
String name;
String call;
public abstract String jiao();
}
class cat extends animal
{
     public cat(String name,String call)
    {
        this.name=name;
        this.call=call;
    }
     public String jiao()
    {
             return this.name+this.call;
       //System.out.println(this.name+this.call);        
     }

}

class dog extends animal
{
     public dog(String name,String call)
    {
        this.name=name;
        this.call=call;
    }
     public String jiao()
    {
             return this.name+this.call;
       //System.out.println(this.name+this.call);        
     }

}

我这段代码中        fun(new cat());这句话有错误“构造函数的猫()是未定义的”那么该怎么改啊!如果这样Animal an=new Cat("猫","喵~喵!");
     System.out.println(an.talk());那么动物种类多了就显得有些麻烦了?请问该怎么改啊?


作者: Weix1992    时间: 2013-11-16 17:10
  1. public cat(String name,String call)
  2.      {
  3.          this.name=name;
  4.          this.call=call;
  5.      }

  6. fun(new cat());
复制代码
你看你cat类里面写了一个有参数的构造方法,那么原来的无参数构造方法cat(){}就没有了,而你又使用new cat() 所以就报错了。
作者: 付凯鹏    时间: 2013-11-16 17:15
new Cat("猫","喵~喵!");你必须这么写,因为,下面子类猫构造函数为有参数的。当你写成new cat();猫类中已经有了一个有参数的构造函数就不会再默认出一个无参的构造函数,肯定会报错。




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