學習總結-封裝、繼承、多態。

Q2繼承java

java繼承的特徵this

1:傳遞性spa

  若類C繼承類B,類B繼承類A(多繼承),則類C既有從類B那裏繼承下來的屬性與方法,也有從類A那裏繼承下來的屬性與方法,還能夠有本身新定義的屬性和方法。繼承來的屬性和方法儘管是隱式   的,但還是類C的屬性和方法。code

2:單根性對象

  若類B繼承類A,那麼創建類B時只須要再描述與基類(類A)不一樣的少許特徵(數據成員和成員方法)便可。這種作法能減少代碼和數據的冗餘度,大大增長程序的重用性。blog

 3:子類調用父類成員繼承

  使用super關鍵字調用父類成員class

  子類默認會先調用父類的無參構造方法,若是父沒有則報錯,能夠手動指定,但必須在第一行test

 舉個例子:程序

package com.zhangyuwei.extend;

public class test1 {
    /*繼承*/
    public static void main(String[] args) {
        /**
         * private 私有的,只容許本類訪問
         * public 公有的,容許全部類訪問
         * protected 授權保護的,只容許子類訪問,同包訪問
         * default 容許同一個包訪問 package,不寫訪問修飾符
         **/
        Dog dog=new Dog("黃毛","黑色",34.4);
        dog.show();
    }
}
class Animal{
    public String name;
    public String color;
    public Animal(){}
    public Animal(String name, String color) {
        this.name = name;
        this.color = color;
    }
    public void show(){
        System.out.println("名稱:"+name+",顏色:"+color);
    }
}
class Dog extends Animal{
    public double price;
    public Dog(String name,String color,double price){
        super(name,color);
        this.price=price;
    }
    /*重寫父類的方法*/
    public void show(){
        super.show();
        System.out.println("價格:"+price);
    }
}

 結果:

Q3:構造方法

構造方法概要

1:構造方法是建立對象時調用的方法,(實例化,new),析構方法

2:構造方法名與類名相同(如Book類的構造方法名稱必定Book)

3:構造方法沒有返回類型() public Book(){}

4:一個類若是不定義構造方法會默認有一個無參構造方法,若是用戶自定義了構造方法則再也不默認定義無參構造方法

 默認調用無參構造:

package com.zhangyuwei.extend;

public class test2 {
    public static void main(String[] args) {
        Car car=new Car();
        Car car1=new Car();
    }
}
class Car{
    private int speed;
    public Car(){
        System.out.println("安裝輪胎");
        System.out.println("安裝方向盤");
        this.speed=230;
    }
}

 結果:

帶參數的構造方法

1:構造方法的參數與普通方法相同

2:構造方法容許重載(同名方法不一樣參數個數或類型)

3:在建立子類時會默認調用父類的構造方法,通常是無參構造

4:使用super能夠調用父類指定的構造方法,子類中調用父類的構造方法時必須在第一行

5:使用super能夠調用父類中的任意公開成員

package com.zhangyuwei.extend;

public class test3 {
    public static void main(String[] args) {
        Car2 car2=new Car2();//調用空構造
        car2.show();
        Car2 car21=new Car2(120);//調用有參構造
        car21.show();
    }
}
class Car2{
    public int speed;
    public Car2(){this.speed=100;}
    public Car2(int speed){this.speed=speed;}
    public void show(){
        System.out.println("車速爲:"+this.speed);
    }
}

 結果:

下面這個例子有些好玩。也正好驗證了上面一句話(在建立子類時會默認調用父類的構造方法,通常是無參構造)

package com.zhangyuwei.extend;

public class test4 {
    public static void main(String[] args) {
        B b=new B();
        
    }
}
class A{
    public A(){
        System.out.println("A");
    }
}
class B extends A{
    public B(){
        System.out.println("B");
    }
}

 結果:

相關文章
相關標籤/搜索