繼承關(guān)系
繼承是一種利用已有的類,快速的創(chuàng)建新的類的機制!
在聲明類時,使用extends關(guān)鍵字可以實現(xiàn)類與類的繼承,例如:
public class Cat extends Animal` { ...
當實現(xiàn)了繼承關(guān)系后摩骨,被繼承的類通常稱之為“父類SuperClass/超類/基類”,而得到繼承的類通常稱之為“子類SubClass/派生類”朗若。
當實現(xiàn)了繼承關(guān)系后恼五,子類將擁有父類中所有的屬性和方法!(正確的哭懈,有爭議的T致)
Java是一門單繼承的語言,即每個子類只允許存在1個直接的父類遣总!
假設(shè)存在A類睬罗,它作為子類繼承了B類,而B類作為子類繼承了C類……則會形成一條“繼承鏈”旭斥,在一條繼承鏈上容达,更下級的子類將繼承得到這條鏈上所有直接和間接父類的所有屬性和方法!
在這個概念上垂券,“繼承”只是一種中文的表達花盐,用于輔助理解相關(guān)的概念,事實上菇爪,extend在英文中表示的是“擴展”卒暂!
在程序過程中,創(chuàng)建對象時娄帖,也會表現(xiàn)出“擴展”的特性,假設(shè)存在Cat extends Animal的關(guān)系昙楚,當new Cat()時近速,程序會先在內(nèi)存中創(chuàng)建一個Animal的對象,然后在此基礎(chǔ)上,創(chuàng)建Cat的對象削葱!也就是“子類包含父類”奖亚!
創(chuàng)建父類
package nnnn; // 包
public class Animal { //創(chuàng)建類
void sleep() { //行為,方法
System.out.println("在睡覺"); // 輸出語句
}
void eat() {
System.out.println("吃食");
}
}
創(chuàng)建子類
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;
}
創(chuàng)建測試類
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();
}
}