黑马程序员技术交流社区
标题:
代码疑问
[打印本页]
作者:
che201311
时间:
2013-11-23 10:44
标题:
代码疑问
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());那么动物种类多了就显得有些麻烦了?请问该怎么改啊?
作者:
王贺
时间:
2013-11-23 11:00
因为你Cat类和Dog类都定义个有参的构造函数,所以你在用new cat()或 new dog()这样的无参时就会报错,可以在调用fun()赋参的时候这样做,比如fun(new dog("dog","汪汪")) ,其他的不用改,不知道是不是楼主要的
作者:
che201311
时间:
2013-11-23 11:02
你的意思是 没有无参了?
作者:
邓伟
时间:
2013-11-23 12:31
//构造函数形参
fun(new dog("狗","汪"));
复制代码
作者:
邓伟
时间:
2013-11-23 12:32
//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 13:54
王贺 发表于 2013-11-23 11:00
因为你Cat类和Dog类都定义个有参的构造函数,所以你在用new cat()或 new dog()这样的无参时就会报错,可以 ...
测试数据
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2