Java 繼承

Java 繼承


繼承的概念

繼承是java面向對象編程技術的一塊基石,因爲它允許創建分等級層次的類。

繼承就是子類繼承父類的特徵和行爲,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行爲。

 

類的繼承格式

在 Java 中通過 extends 關鍵字可以申明一個類是從另外一個類繼承而來的,一般形式如下:

類的繼承格式

class 父類 { 

} 
class 子類 extends 父類 { 

}

實例:

我們定義一個 Person 類作爲父類,包括 姓名、性別、年齡 等基本信息封裝完成。

定義一個 Student 類作爲,子類,在父類的基礎上多了 學號、分數 等信息。

則代碼實現爲:

父類:

public class Person {
    private String name;
    private String sex;
    private int age;
    
    public Person() {
    }

	public Person(String name, String sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
    	this.name = name;
	}
	public String getSex() {
    	return sex;
	}
	public void setSex(String sex) {
    	this.sex = sex;
	}
	public int getAge() {
    	return age;
	}
	public void setAge(int age) {
    	this.age = age;
	}
	public String toString() {
    	return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}
}

子類則爲:

public class Student extends Person{
	private int num;
	private double score;
	public Student() {
	}
    //注意這裏的構造方法
	public Student(String name, String sex, int age,int num, double score) {
		super(name, sex, age);
		this.num = num;
		this.score = score;
	}
	//-------------------------------------
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public double getScore() {
		return score;
	}
	public void setScore(double score) {
		this.score = score;
	}
	public String toString() {
		return "Student [num=" + num + ", score=" + score + "name=" + this.getName() + ", sex=" + this.getSex() + ", age=" + this.getAge() + "]";
	}
}

這樣,子類就繼承了父類中 name 、sex、 age 等基礎屬性,與getage()等方法。

Main 方法

public class Main {

	public static void main(String[] args) {
		Person p1 = new Person();
        Student s2 = new Student("王二狗子", "boy", 10, 1, 90);
        //s2 爲 Student 類,但是可以調用 getAge()方法,因爲繼承了父類Person
        System.out.println(s2.getAge());
	}
}

 

繼承的特性:

* 1.繼承的單向的
* 2.正常的繼承一個類只能有一個父類!
* 3.子類繼承父類的方法和屬性
* 4.子類可以新增方法和修改父類中繼承來方法

 

P.S. super 與 this 關鍵字

super關鍵字:我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前對象的父類。

this關鍵字:指向自己的引用。

class Animal {
	void eat() {
		System.out.println("animal : eat");
	}
}

class Dog extends Animal {
	void eat() {
		System.out.println("dog : eat");
	}
	void eatTest() {
		this.eat();   // this 調用自己的方法
		super.eat();  // super 調用父類方法
	}
}

public class Test {
	public static void main(String[] args) {
		Animal a = new Animal();
		a.eat();
		Dog d = new Dog();
		d.eatTest();
	}
}

/*
animal : eat
dog : eat
animal : eat
*/

 

發佈了424 篇原創文章 · 獲贊 102 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章