繼承關系
繼承是一種利用已有的類,快速的創建新的類的機制!
在聲明類時,使用extends關鍵字可以實現類與類的繼承,例如:
public class Cat extends Animal` { ...
當實現了繼承關系后,被繼承的類通常稱之為“父類SuperClass/超類/基類”,而得到繼承的類通常稱之為“子類SubClass/派生類”。
當實現了繼承關系后,子類將擁有父類中所有的屬性和方法!(正確的,有爭議的!)
Java是一門單繼承的語言,即每個子類只允許存在1個直接的父類!
假設存在A類,它作為子類繼承了B類,而B類作為子類繼承了C類……則會形成一條“繼承鏈”,在一條繼承鏈上,更下級的子類將繼承得到這條鏈上所有直接和間接父類的所有屬性和方法!
在這個概念上,“繼承”只是一種中文的表達,用于輔助理解相關的概念,事實上,extend在英文中表示的是“擴展”!
在程序過程中,創建對象時,也會表現出“擴展”的特性,假設存在Cat extends Animal的關系,當new Cat()時,程序會先在內存中創建一個Animal的對象,然后在此基礎上,創建Cat的對象!也就是“子類包含父類”!
創建父類
package nnnn; // 包
public class Animal { //創建類
void sleep() { //行為,方法
System.out.println("在睡覺"); // 輸出語句
}
void eat() {
System.out.println("吃食");
}
}
創建子類
package nnnn;
public class Cat extends Animal { //繼承父類(Animal)
String color; // 顏色屬性
String name; //姓名屬性
int age; //年齡屬性
}
package nnnn;
public class Dog extends Animal{
String color;
String name;
int age;
}
創建測試類
package nnnn;
public class Sample {
public static void main(String[] args) {
Cat c = new Cat(); //
c.name= "小白";
c.color = "白色";
c.age = 3;
System.out.print(c.name+"的顏色為:"+c.color+",年齡"+c.age+"歲");
c.sleep();
Dog d = new Dog();
d.name="小金";
d.color = "金色";
d.age = 1;
System.out.print(d.name+"的顏色為:"+d.color+",年齡"+d.age+"歲");
d.eat();
}
}