day02-面向對象【重寫、this、super,抽象類】

繼承: 子類繼承父類後,子類中就擁有了父類中所有的非私有成員;

使用關鍵字extends;

public class Fu{
int a = 100;
private int b = 200;
}

public class Zi extends Fu{

// int a = 100;
int c = 300;
public void method01(){
    ...
}

}

特點:

1.只有單繼承
2.多層繼承

———第二天 —-面向對象【重寫、this、super,抽象類】——————–

1.方法的重寫

1.在子類中定義一個方法,與父類中的方法一樣;
2.父類中的私有方法時不能被繼承的.
3.通過子類對象調用方法時,系統會先去子類中查找這個方法,如果找到了就執行,如果沒有找到就去父類中查找,然後執行.

重寫方法的原因:
    從父類中繼承的方法不能滿足子類的需要;

父類:superclass
子類:subclass

**只能重寫父類中非私有的方法;

2.重寫方法的注意事項

1.子類中方法中權限必須大於或者等於父類中方法的權限;
在java中有四大權限:
    public(公共的,共用的)-protected(受保護的)-default(默認的)-private(私有的)
    從左向右依次變小;

3.重寫變量

在父類中定義變量,這個變量與父類中變量一樣;
會覆蓋父類中的這個變量;
只能重寫父類中非私有的變量;

4.this關鍵字

表示當前類的對象;
哪個對象正在調用this所在的方法,this就表示哪個對象;
this();表示調用無參的構造方法;

this的用法或者作用:

    1.用來標記當前變量是成員變量的;
    2.在構造方法中調用本類的其它構造方法;
    3.調用本類中的成員變量或者方法;

5.super關鍵字

表示父類對象;

super的用法或者作用:

1.可以在子類中通過super關鍵字調用父類中的成員變量或者成員方法;

    示例代碼:
        public class Zi extends Fu {

            int a = 200;

            // 1.可以在子類中通過super關鍵字調用父類中的成員變量或者成員方法;
            public void method01() {
                // 打印子類中的a=200
                System.out.println(a);

                // 打印父類中的a=100
                System.out.println(super.a);

                // 調用父類中的method01方法
                super.method01();
            }
        }

2.可以在子類的構造方法中通過super關鍵字調用父類的構造方法;

    在子類的構造方法中默認調用父類的無參構造方法,即使沒有寫super();默認也會調用父類中有無參的構造方法;前提是父類中有無參的構造方法;

    示例代碼:
        public Zi() {
            // 2.可以在子類的構造方法中通過super關鍵字調用父類的構造方法;
            super(); // 相當於Fu(); 調用父類中的無參構造方法
            System.out.println("Zi類的構造方法....");
        }

        public Zi(int a) {
            // 2.可以在子類的構造方法中通過super關鍵字調用父類的構造方法;
            super(a); // 相當於Fu(); 調用父類中的無參構造方法
            this.a = a;
        }

注意事項:
    this(參數列表)和super(參數列表)這兩種寫法不能同時寫在子類的構造方法中;

6.抽象類的定義格式

        public abstract class 類名{
            ....
        }

        抽象類不能創建對象,也就是不能new.

7.抽象方法的定義格式

    public abstract 返回值類型 方法名(參數列表);

    抽象方法不能被調用;

    定義抽象方法的目的:在父類中定義功能的名字,讓子類實現這個功能;

8.抽象類的使用

抽象類不能創建對象,也就是不能new.
抽象方法不能被調用;

怎麼使用:

        1.定義一個類,繼承抽象類,然後實現抽象類中所有的抽象方法;
            怎麼在子類中實現抽象類中的抽象方法:
                1.從父類中拷貝抽象方法,粘貼到子類中;
                2.刪除abstract關鍵字;
                3.添加方法體;

        2.創建子類對象;
        3.通過子類對象調用重寫後的方法;


注意事項:

    1.抽象類中可以定義抽象方法,也可以定義多個抽象方法,也可以不定義抽象方法;
        (如果抽象類中沒有定義抽象方法,是爲了不讓其他人創建這類的對象;)
    2.抽象類中可以定義普通的變量和方法;
    3.子類必須實現抽象父類中所有的抽象方法,如果沒有全部實現抽象方法,要求這個子類必須定義成抽象類;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章