我是Java新人,请问各位大师,这个为什么错了?
本帖最后由 hodunw 于 2012-12-06 09:01:43 编辑 以下是我在Gouzaofangfa包里面的Gouzao文件:
package Gouzaofangfa;
import java.io.*;
class Cat{
private float weight;
private String color;
public String getColor()
{
return color;
}
public void Cat(String s)
{
color=s;
System.out.println("It's a "+s+"cat and weight "+getWeight()+"kg.");
}
public float getWeight(){
return weight;
}
void Cat(String s,float w)
{
color=s;
weight=w;
System.out.println("It's a "+s+"cat an weight "+w+"kg.");
}
void Cat(Cat cat)
{
color=cat.color;
weight=cat.weight;
System.out.println("It's a "+color+"cat and weight "+weight+"kg.");
}
}
public class Gouzao {
public static void main(String args[])
{
Cat cata=new Cat("");
}
}
我按照书上的写的,但是我不太理解为什么方法名和类名可以一样,而且方法名还可以重复吗?都是Cat。书上只作了简单的介绍说:“方法名和类名可以一样,也可以不一样。”然后我按照书上用Cat类创建对象:
书上是Cat cata=new Cat("black");,但我写入black的时候就显示错误。
[最优解释]
public void Cat(String s)
这就是传说中的带返回类型的构造函数吗?
[其他解释]
Cat cata=new Cat("");
你这里用到的是Cat带参的构造方法,而构造方法不可以有返回值,void的也不行.
把
public void Cat(String s)
的void去掉.
详见书上 构造方法一节
[其他解释]
楼主可以去看看Java的重载是怎么说明的。方法名相同,参数不同就是重载。你的代码符合重载的规则,
你把代码出错的一行改成Cat cat = new Cat();new一个对象调用参数不同的cat方法,你看一下执行结果。
[其他解释]
你的构造函数没有有参的。应显示申明一个
public Cat(String s)
{
}
你有一个方法为
Public void Cat(String s)
{
}
是不是手写输入错误了。去掉void
[其他解释]
一旦把类名加上返回类型修饰(包括void),就成了普通成员方法了,而不是构造方法了。
楼主的所有的Cat()都加了 void,所以都成了普通方法了。
既然不是构造函数了,所以
Cat cata=new Cat("");这句就有错误了,因为没有这个构造方法。
只能使用默认构造方法
Cat cata=new Cat();
可以用这个cata对象,去调用那些Cat()方法,看看其结果。
public static void main(String args[])
{
Cat cata=new Cat();
Cat catb=new Cat();
catb.Cat("black",2.10f);
cata.Cat(catb);
}