这段代码可以很好地编译:
人.java
package people;
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
}
这不是:
controller.java
package people;
public class controller{
public static void main (String[] args){
Person mark = new Person();
mark.setName("Mark");
mark.setAge(24);
}
}
我收到此编译错误:
C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol
Person mark = new Person();
^
symbol: class Person
location: class controller
C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol
Person mark = new Person();
^
symbol: class Person
location: class controller
我对此进行了很多研究,似乎无法弄清楚。我是否尝试在controller.java文件中错误地实例化该对象?谢谢。
您的类Person
具有一个带有两个参数aString
和an的构造函数int
。但是,您尝试Person
使用不带参数的构造函数创建对象:
Person mark = new Person();
您需要将参数传递给构造函数:
Person mark = new Person("Mark", 24);
当然set...()
,此后您无需再调用这些方法。
Java编译器会自动在类中创建不带参数的构造函数,但前提是您根本没有在类中显式添加任何构造函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句