我创建了一个类文件和一个测试文件.当我尝试使用构造函数来创建对象时,它将无法编译.
它说"PassTheClassTester.java:5:错误:类PassTheClass中的构造函数PassTheClass不能应用于给定的类型;"
请帮忙.这是我的代码:
public class PassTheClass
{
private String myName = " ";
private int myGrade;
private String myEmotion = " ";
public PassTheClass (String xMyName, String xMyEmotion)
{myName = xMyName;
myGrade = 0;
myEmotion = xMyEmotion;}
public String getMyName()
{return myName;}
public int getMyGrade()
{return myGrade;}
public String getMyEmotion()
{return myEmotion;}
public void setMyName (String yMyName)
{myName = yMyName;}
public void setMyGrade (int yMyGrade)
{myGrade = yMyGrade;}
public void setMyEmotion (String yMyEmotion)
{myEmotion = yMyEmotion;}
}
public class PassTheClassTester
{
public static void main(String[] args)
{
PassTheClass demo = new PassTheClass("Squidward",94,"proud");
System.out.println(student.getMyName());
}
}
Run Code Online (Sandbox Code Playgroud)
你的构造函数接受String, String,但你正在通过String, int, String.
将int参数添加到构造函数,或int从调用中删除.
我的建议是添加一个int参数,即将构造函数更改为:
public PassTheClass (String xMyName, int xMyGrade, String xMyEmotion) {
myName = xMyName;
myGrade = xMyGrade;
myEmotion = xMyEmotion;
}
Run Code Online (Sandbox Code Playgroud)
如果您仍然需要String, String构造函数,请将其更改为调用3-arg,并传入您当前编码的初始值:
public PassTheClass (String xMyName, String xMyEmotion) {
this(xMyName, 0, xMyEmotion);
}
Run Code Online (Sandbox Code Playgroud)
关于用"x"前缀参数以区别于字段名称没有"错误",我从未见过这样的事情.java中的约定是使用与参数相同的名称作为字段名称,并this.在分配时使用,如下所示
public PassTheClass (String myName, int myGrade, String myEmotion) {
this.myName = myName;
this.myGrade = myGrade;
this.myEmotion = myEmotion;
}
Run Code Online (Sandbox Code Playgroud)
作为进一步的"风格"改进,不要在字段名称前添加"my".每个领域都隐含着"我的"东西; 只是他们的名字说白了,即name,grade和emotion.
好的代码就是清晰度:更喜欢避免使用前缀,因为它们只会使代码混乱并降低可读性.
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |