繼承和繼承的機構特點

 在面向對象的編程思想中,有三大特性: 封裝, 繼承, 多態;
  繼承: 表現的是類與類之間的一種關係, 一旦子類繼承自父類之後就擁有了父類的成員變量,成員方法了.
  好處: 可以提高代碼的複用性;
 
繼承的格式:
 需要使用關鍵字: 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支持多層繼承



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