总结:对于继承。如果父类有的成员变量而子类没有,那么子类的成员变量赋值是来自于父类的,当在子类构造方法赋值时,它和父类的成员变量值是一样的

 

    当成员变量在父类和子类中都存在时,父类用父类的属性,子类用子类的属性

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();// 调用父类的方法
	}
}