背景:在跟着视频学习类的继承和函数重写:代码如下
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 String getSchool(){
return school;
}
public void setSchool(String school){
this.school = school;
}
public String getInfo(){
return "name:"+name+"\n"+"age:"+age+"\n"+"school"+school;
}
}
public class TestPerson{
public static void main(String[] args){
Student student = new Student();
Person person = new Person();
person.setName("none");
person.setAge(11);
student.setName("jolin");
student.setAge(21);
student.setSchool("SCH");
System.out.println(person.getInfo());
System.out.println(student.getInfo());
System.out.println(student.getSchool());
}
}
根据对比 我发现要将30行的name 改成getName,age改成getAge代码可以成功编译
问题1 :与17行对比 我就很疑惑。既然是继承就包括继承了成员变量name和age 为什么这里就不可以直接调用了?
问题2 : 还有我试了下如果把30行的name 改成student.name 还是不行
同样的改成this.name还是出错。
这里问题比较杂 求大神解答