class Person {
private String name;
private String location; Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name,String location) {
this.name = name;
this.location = location;
}
public String info() {
return
"name: "+name+
" location: "+location;
}
}class Teacher extends Person {
private String capital;
Teacher(String name, String capital) {
this(name, "beijing", capital);
}
Teacher(String n, String l, String capital) {
super(n, l);
this.capital = capital;
}
public String info() {
return super.info() + "capital " + capital;
}
}class Student extends Person {
private String school;
Student(String name,
String school) {
this(name,"beijing", school);
}
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}
public String info() {
return super.info()+
" school: "+school;
}
}public class TestTeacher {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Student s1 = new Student("C","S1");
Student s2 =
new Student("C","shanhai","S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
Teacher t1 = new Teacher("D", "Professor");
System.out.println(t1.info());
}
}
我编译没有问题的,为什么不能运行呢?老是出现这样的错误:
Exception in thread "main" java.lang.NoSuchMethodError: Person.<init>(Ljava/lang
/String;)V
at TestStudent.main(TestStudent.java:34)
private String name;
private String location; Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name,String location) {
this.name = name;
this.location = location;
}
public String info() {
return
"name: "+name+
" location: "+location;
}
}class Teacher extends Person {
private String capital;
Teacher(String name, String capital) {
this(name, "beijing", capital);
}
Teacher(String n, String l, String capital) {
super(n, l);
this.capital = capital;
}
public String info() {
return super.info() + "capital " + capital;
}
}class Student extends Person {
private String school;
Student(String name,
String school) {
this(name,"beijing", school);
}
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}
public String info() {
return super.info()+
" school: "+school;
}
}public class TestTeacher {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Student s1 = new Student("C","S1");
Student s2 =
new Student("C","shanhai","S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
Teacher t1 = new Teacher("D", "Professor");
System.out.println(t1.info());
}
}
我编译没有问题的,为什么不能运行呢?老是出现这样的错误:
Exception in thread "main" java.lang.NoSuchMethodError: Person.<init>(Ljava/lang
/String;)V
at TestStudent.main(TestStudent.java:34)
我的結果
name: A location: beijing
name: B location: shanghai
name: C location: beijing school: S1
name: C location: shanhai school: S2
name: D location: beijingcapital Professor
public 加在哪個class上面 這個.java文件的名字 就叫TestTeacher 就好了
private String name;
private String location; Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name,String location) {
this.name = name;
this.location = location;
}
public String info() {
return
"name: "+name+
" location: "+location;
}
}class Student extends Person {
private String school;
Student(String name,
String school) {
this(name,"beijing", school);
}
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}
public String info() {
return super.info()+
" school: "+school;
}
}public class TestStudent {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Student s1 = new Student("C","S1");
Student s2 =
new Student("C","shanhai","S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
}
}我把它改成专门测试学生的,可还是出现相同的错误,所以不是你们说的那样的!这和那好像没有关系的呀!
貌似应该是 java TestTeacher把
因为从报错来看,是Person这个类的构造函数有问题,不接受Person(String)这种形式。这个构造方法是不是后加的,后加以后,有没有再编译Person?试着把原来的class文件删除后,重新编译所有文件。
private String name;
private String location; Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name,String location) {
this.name = name;
this.location = location;
}
public String info() {
return
"name: "+name+
" location: "+location;
}
} class Teacher extends Person {
private String capital; Teacher(String name, String capital) {
this(name, "beijing", capital);
} Teacher(String n, String l, String capital) {
super(n, l);
this.capital = capital;
} public String info() {
return super.info() + "capital " + capital;
}
} class Student extends Person {
private String school;
Student(String name,
String school) {
this(name,"beijing", school);
}
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}
public String info() {
return super.info()+
" school: "+school;
}
} public class TestTeacher {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Student s1 = new Student("C","S1");
Student s2 =
new Student("C","shanhai","S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
Teacher t1 = new Teacher("D", "Professor");
System.out.println(t1.info());
}
} 错误是这样的:Exception in thread "main" java.lang.NoSuchMethodError: Person.<init>(Ljava/lang
/String;)V
at TestTeacher.main(TestTeacher.java:58)
private String name;
private String location; Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name,String location) {
this.name = name;
this.location = location;
}
public String info() {
return
"name: "+name+
" location: "+location;
}
} class Student extends Person {
private String school;
Student(String name,
String school) {
this(name,"beijing", school);
}
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}
public String info() {
return super.info()+
" school: "+school;
}
} public class TestStudent {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Student s1 = new Student("C","S1");
Student s2 =
new Student("C","shanhai","S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
}
}这个的错误是这样的:
Exception in thread "main" java.lang.NoSuchMethodError: Person. <init>(Ljava/lang
/String;)V
at TestStudent.main(TestStudent.java:34)
E:\>javac TestTeacher.javaE:\>java TestTeacher
name: A location: beijing
name: B location: shanghai
name: C location: beijing school: S1
name: C location: shanhai school: S2
name: D location: beijingcapital ProfessorE:\>