java基础 类2

 

1.子类对象访问成员的顺序:先子类,再父类。 ----如果子类存在就是使用子类的,

不会访问父类。

 

2.子类对象的构造顺序: 先父类,再子类。


3.如果一个类显式声明从哪个类继承,则父类就是哪个类;如果没有显式声明,那么

Java会帮自动让该类继承Object,因此Object是Java中所有类的根。


4. super(...), this(...) 这两种方法只能在构造方法中调用,且必须是在第一句,还有这

两种方法是互斥的(有一个,就不能有另外一个)。
  
5. 子类和父类相同的方法叫覆盖方法。子类与父类方法中,一个是静态,另一个是非静

态,这种情况不能形成覆盖方法,且Java不允许出现这种情况。


6. 子类的覆盖方法权限不能低于父类的  ---覆盖方法的一个约束: 前(权限)不能小,

后(异常)不能大。

7.子类的构造方法中,一定会在第一句调用super(...)。如果我们手动写了这一句,

就是调用该句;如果我们没写,Java会自动帮我们加:super()。

package cn.hncu.para2.v1;

public class Person{
	private String name;
	private int age;
	private static int count;
	
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
		count++;
	}
	public Person() {
		this("NoName",0);
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return name + ", " + age;
	}
	
	public static void howMany(){
		System.out.println( count+ " 个人!");
	}
	
	
}
package cn.hncu.para2.v1;

/*
 * 1.子类对象访问成员的顺序:先子类,再父类。 ----如果子类存在就是使用子类的,不会访问父类。
 * 2.子类对象的构造顺序: 先父类,再子类。
 * 
 * 3.如果一个类显式声明从哪个类继承,则父类就是哪个类;如果没有显式声明,那么Java会帮自动让该类继承Object,因此Object是Java中所有类的根。
 * 
 * 4. super(...), this(...) 这两种方法只能在构造方法中调用,且必须是在第一句,还有这两种方法是互斥的(有一个,就不能有另外一个)
 * 
 * 5. 子类和父类相同的方法叫覆盖方法。子类与父类方法中,一个是静态,另一个是非静态,这种情况不能形成覆盖方法,且Java不允许出现这种情况。
 * 
 * 6. 子类的覆盖方法权限不能低于父类的  ---覆盖方法的一个约束: 前(权限)不能小,后(异常)不能大
 * 
 */

public class Student extends Person{
	String speciality;
	private static int count; //隐藏
	
	public Student(String name, int age, String speciality){
		//this.setName(name);
		super(name,age);// super(...)是用于构造父类对象的,且必须在第一句
		this.speciality = speciality;
		count++;
	}
	
	public Student(){
		/*子类的构造方法中,一定会在第一句调用super(...)。
		 * 如果我们手动写了这一句,就是调用该句;如果我们没写,Java会自动帮我们加:super()。
		 */
		super();//这一句我们不写,Java会帮我们加
		count++;
	}
	
	public String getSpeciality() {
		return speciality;
	}

	public void setSpeciality(String speciality) {
		this.speciality = speciality;
	}

	//覆盖方法,子类的权限不能低于父类
	public String toString() {
		return "Student: "+super.toString()+","+this.speciality;
	}
	
	
	public static void howMany(){
		System.out.println(count+" 个学生!");
	}
	
}
package cn.hncu.para2.v1;

public class Teacher extends Person{
	private String research;
	private static int count;
	
	public Teacher(String name, int age, String research){
		//super(name,age);
		this.research = research;
		count++;
	}
	public Teacher(){
		this(null,0,null);
	}
	public String getResearch() {
		return research;
	}
	public void setResearch(String research) {
		this.research = research;
	}
	
	@Override
	public String toString() {
		return "Teacher:"+super.toString()+"," + research;
	}
	
	public static void howMany(){
		System.out.println(count+" 个老师!");
	}
}
package cn.hncu.para2.v1;

public class Demo {

	public static void main(String[] args) {
		Person p = new Person("Jack",22);
		System.out.println( p.toString() );  //p.toString()
		System.out.println(p.hashCode());
		
		Student s = new Student();
		//s.name="Tom";
		//s.age=23;
		s.setName("Tom");
		s.setAge(23);
		System.out.println(s); //s.toString()
		
		Student s2 = new Student("张三",25,"Computer");
		System.out.println(s2.toString()); //
		
		
		Teacher t = new Teacher("Rose", 28, "Programming");
		System.out.println(t);
		
		System.out.println("----------------");
		Teacher t2 = new Teacher();
		Teacher.howMany();
		Student.howMany();
		Person.howMany();
		
	}

}

猜你喜欢

转载自blog.csdn.net/lx678111/article/details/81258106