//以下代码在CMD中编译通过,但是运行时出错,很简单的代码,但找不到什么原因,请大家帮帮忙,谢谢,错误描述如下:
//Exception in thread 'main' java.lang.NoSuchMethodError:
//person.getInfo()Ljava/lang/String;
// at TestOverWrite.main(TestOverWrite.java:46)class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getInfo() {
return "name: " + name + "\n age: " + age;
}
}class Student extends Person {
private String school;
public void setSchool(String school) {
this.school = school;
}
public String getSchool() {
return school;
}
public String getInfo() {
return "name: " + getName() + "\nage: " + getAge()
+ "\nschool: " + school;
}
}public class TestOverWrite {
public static void main(String[] args) {
Student student = new Student();
Person person = new Person();
student.setName("John");
student.setAge(18);
student.setSchool("SCH");
person.setName("None");
person.setAge(1000);
System.out.println(person.getInfo());
System.out.println(student.getInfo());
}
}
//Exception in thread 'main' java.lang.NoSuchMethodError:
//person.getInfo()Ljava/lang/String;
// at TestOverWrite.main(TestOverWrite.java:46)class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getInfo() {
return "name: " + name + "\n age: " + age;
}
}class Student extends Person {
private String school;
public void setSchool(String school) {
this.school = school;
}
public String getSchool() {
return school;
}
public String getInfo() {
return "name: " + getName() + "\nage: " + getAge()
+ "\nschool: " + school;
}
}public class TestOverWrite {
public static void main(String[] args) {
Student student = new Student();
Person person = new Person();
student.setName("John");
student.setAge(18);
student.setSchool("SCH");
person.setName("None");
person.setAge(1000);
System.out.println(person.getInfo());
System.out.println(student.getInfo());
}
}
return "name: " + name + "\n age: " + age;
}这个方法是编译完了才加上去的吗
结果是:un-single:
name: None
age: 1000
name: John
age: 18
school: SCH如果你不能运行,可能是CLASSPATH的问题。建议你好好研究一下CLASSPATH或者改用个IDE。
我试过了,把
System.out.println(person.getInfo()); 改成
System.out.println(person.getName()); 后,编译运行都没问题,再改回来又一样出错。System.out.println(student.getInfo()); 这个也是一样的错误提示。
public String getInfo() {
return "name: " + name + "\n age: " + age;
}
改成最简单的
public String getInfo() {
return name;
}
也一样错误