首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

小弟我是Java新人,请教各位大师,这个为什么错了

2012-12-25 
我是Java新人,请问各位大师,这个为什么错了?本帖最后由 hodunw 于 2012-12-06 09:01:43 编辑以下是我在Gou

我是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);
}

[其他解释]
“方法名和类名可以一样,也可以不一样。”
尽管书上这样说,但还是建议:
类名只作为构造方法名。普通方法不要和类名一样,而且最好第一个字母小写。
[其他解释]
谢谢各位,还有一个问题,就是像class Cat中的构造方法名我不想再重复用Cat,可以改成其他的吗?我自己改了一下,发现不对。我是直接把Cat(String s)中的Cat改成Cat1,Cat(String s,float w)中的Cat改成Cat2,把Cat(Cat cat)中的Cat改成Cat3。最后这个Cat(Cat cat)不知道它表示的是什么意思,是调用Cat类中的属性吗?
[其他解释]
构造方法名,必需要和类名一致,这是规定的. 换名字就是普通方法了.楼主的例子,只要是构造方法,那必须是Cat(...).
[其他解释]
谢谢各位了,刚开始学习,看书后发现这问题问得太幼稚了点,谢谢各位耐心回答了!

热点排行