繼承: 表現的是類與類之間的一種關係, 一旦子類繼承自父類之後就擁有了父類的成員變量,成員方法了.
好處: 可以提高代碼的複用性;
繼承的格式:
需要使用關鍵字: extends
public class 類A extends 類B{
}
稱呼:
類A是類B的子類
類B是類A的父類
舉個例子:
部門經理,部門主管,部門員工, 繼承自員工類;
========================================================================================
/*
* 在繼承結構中,如果訪問的是同名的變量,會有一些什麼樣的特點呢?
* 同名變量, 也就是父類中, 子類中也有:
* 1. 如果直接使用對象名的方式訪問:
* 不管編譯還是運行, 優先看子類中是否存在.
* 編譯時期,先看子類, 如果子類中有,就使用子類的,沒有去父類中找;
* 運行時候,先看子類, 如果子類中有,就使用子類的,沒有去父類中找;
* 2. 如果間接訪問(通過方法),
* 編譯,運行時期, 默認使用的就是本類中的,如果本類中沒有,向上找父類
*
*/
public class Demo01JichengBianliang {
public static void main(String[] args) {
//1.創建一個子類對象
Zi zi = new Zi();
System.out.println(zi.age);// 20
// 間接訪問成員變量, 使用方法
zi.test1();
}
}
--------------------------------------------------------------------------------
/*
*
* 成員變量在定義的時候,可以直接給裏面的屬性進行賦值
*
*
* 給成員變量賦值的方式:
* 1. 使用構造方法
* 2. 使用set方法
* 3. 在類中定義的時候指定一個值
*/
public class Fu/* extends Object*/{
int age = 10;
}
---------------------------------------------------------------------------------
package cn.itcast.demo07;
public class Zi extends Fu {
//int age = 20;
public void test1(){
// 默認訪問的就是本類中的成員變量
// 如果子類中沒有就向上找父類.
System.out.println("age = " + age);
}
}
===========================================================================
同樣道理,在繼承中訪問同名方法也是一樣的道理
/*
* 在繼承結構中訪問同名方法的特點:
* 先看子類中是否有這個方法, 如果有就執行子類的方法
* 如果沒有就向上找父類, 如果找到就調用,如果沒有找到,就報錯
*
* 注意點:
* 不管是訪問成員變量,還是成員方法,先在子類(本類)中查找,沒有就向上父類中查找, 不會向下子類中查找.
*
*/
public class Demo01JiChengMethod {
public static void main(String[] args) {
//1.創建子類對象
Zi zi = new Zi();
zi.method();
//2.創建父類對象
Fu fu = new Fu();
fu.method();
//fu.method2();// 不會向下找方法是否存在, 只會向上,到父類中查找
}
}
--------------------------------------------------------------------------------------------------------
public class Fu {
public void method(){
System.out.println("fu - method");
}
}
------------------------------------------------------------------------------------------------------------
public class Zi extends Fu{
int num = 20;
public void method(){
System.out.println("zi - method");
}
public void method2(){
System.out.println("zi = method2");
}
}
總結:
1. 在Java中,類的繼承是指在一個現有類的基礎上去構建一個新的類,構建出來的新類被稱作子類,現有類被稱作父類,子類會自動擁有父類所有可繼承的屬性和方法。
2. 當子類的成員變量和父類的成員變量不同名,且父類成員變量非私有的時候,子類可以直接訪問成員變量; 如果父類成員變量私有了,子類就不能直接訪問父類的成員變量了。
3. 在程序中通過對象調用方法時,會先在子類中查找有沒有對應的方法,若子類中存在就會執行子類中的方法,若子類中不存在就會執行父類中相應的方法。
4. Java中繼承的特點是:
1. Java中類是單繼承的
2. Java支持多層繼承