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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© che201311 中级黑马   /  2013-11-23 10:44  /  1226 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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());那么动物种类多了就显得有些麻烦了?请问该怎么改啊?

5 个回复

倒序浏览
因为你Cat类和Dog类都定义个有参的构造函数,所以你在用new cat()或 new dog()这样的无参时就会报错,可以在调用fun()赋参的时候这样做,比如fun(new dog("dog","汪汪")) ,其他的不用改,不知道是不是楼主要的
回复 使用道具 举报
你的意思是 没有无参了?
回复 使用道具 举报
  1. //构造函数形参
  2.                         fun(new dog("狗","汪"));
复制代码
回复 使用道具 举报
//sorry 第一个发错了.
class Nine2 {
                public static void main(String[] args)
                {
                        fun(new cat("猫","瞄"));   //构造函数形参
                        fun(new dog("狗","汪"));//构造函数形参
       
                }
                public static void fun(animal a)
                {
                        System.out.println(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);        
        }

}
[/code]
回复 使用道具 举报
王贺 发表于 2013-11-23 11:00
因为你Cat类和Dog类都定义个有参的构造函数,所以你在用new cat()或 new dog()这样的无参时就会报错,可以 ...

测试数据
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马