总结:对于继承。如果父类有的成员变量而子类没有,那么子类的成员变量赋值是来自于父类的,当在子类构造方法赋值时,它和父类的成员变量值是一样的
当成员变量在父类和子类中都存在时,父类用父类的属性,子类用子类的属性
package com.a.b;
class Peson {
String name;
int age;
public Peson(String a, int b) {// 带参的构造方法
name = a;
age = b;
}
public Peson() {
name = "person name";
age = 44;
}
public void pprint() {
System.out.println("class:Person;" + "Name:" + name + "; age:" + age);
}
}
// 这个说明,当成员变量在子类和父类中都有定义时,父类用自己的,子类也用自己的成员变量
// 当这个成员变量存在于父类,而子类没有时,子类的age成员是继承父类的,此时子类和父类均为20;
// 当我们注释掉子类无参构造方法里的age时,子类和父类的年龄是一样的是,44
// 当我注释掉子类的name变量时,子类和父类的name也都变为Student name.成了公共成员变量
class Student extends Peson {
int classno;
//String name;
public Student() {//这里的父类一定要一致
name = "Student name";
age = 20;
}
public Student(String a, int b, int c) {
name = a;
age = b;
classno = c;
}
public void sprint() {
System.out.println("class:Student;" + "Name:" + name + ";age:" + age
+ ";classno:" + classno);
}
}
// 这作为一个测试类
public class Morning {
public static void main(String[] args) {
Student s = new Student();
s.pprint();// 调用父类的方法
s.sprint();// 调用子类的方法
Student s2 = new Student("zhangsna", 66, 2);
s2.sprint();// 调用子类的成员方法
s2.pprint();// 调用父类的方法
}
}