我有一个名为Location的课程:
public class Location {
public int x,y;
void Location(int x, int y){
}
}
一个叫做士兵的课程:
public class Soldier {
String id;
Location l1 = new Location();
void Soldier(String id, Location l1);
}
当我打电话时:
Soldier s1 = new Soldier();
s1.Soldier("Sniper",(100,200))
从另一个班级,它说错误“找不到合适的方法”。请帮忙!
我不擅长英语,也不擅长Java,所以我很抱歉我的问题不明确。
答案 0 :(得分:1)
三个主要问题:
您错误地定义了构造函数:删除前面的void
:
public class Location {
public int x,y;
Location(int x, int y){ // *** No `void`
}
}
(在Soldier
上也一样。)
使用void
,他们不是构造函数,他们是&em>方法。
您可能还希望它们为public
,但这取决于您希望如何使用它们。
您的Soldier
构造函数定义它需要一个字符串和一个Location
。你没有给它那个。您可能想要创建Location
:
s1.Soldier("Sniper", new Location(100,200))
// ------------------^^^^^^^^^^^^
您的Soldier
构造函数无效:
void Soldier(String id, Location l1); // Invalid
你之后有一个;
,没有构造函数体。相反,您可能希望在那里使用参数:
Soldier(String id, Location l1) {
this.id = id;
this.l1 = l1;
}
您可能还想在Soldier
中删除此字段的初始值设定项:
Location l1 = new Location();
,例如,
Location l1;
...因为我们(现在)让Soldier
使用其参数进行设置(感谢上面的#3)。
答案 1 :(得分:0)
Location l1 = new Location();
以上是错误的。
像这样的实例变量初始化器:
Location l1;
void Soldier(String id, Location l1){
s1.Soldier("Sniper", new Location(100,200));
}
您必须创建Location类的实例。
这样做。
答案 2 :(得分:-1)
您需要学习的第一件事是 camelCase
2:您的位置类有一个方法名称作为构造函数名称,违反了java编程约定
的 3:强>
学习以下内容:类,对象,构造函数,方法,继承
班级地点{
public int x, y;
void printLocation(String loc) {
System.out.println("Location: " + loc);
}
}
公共类士兵扩展位置{
public static void main(String[] args) {
Soldier s1 = new Soldier();
s1.printLocation("Syria");
}
}