1. 程式人生 > 其它 >面向物件.2

面向物件.2

1.類的繼承

將一些類中共同共有的屬性特點總結出來建立一個新的類,作為父類(具有最基本的屬性),令其他略有不同的類(子類)繼承,繼承父類使用”extends"關鍵字進行繼承。

public class Teacher extends Person{
int number;

public static void main(String[] args) {
Teacher t=new Teacher();
t.age=18;
t.name="阿P";
t.number=238064;
t.speak();
System.out.println("編號"+t.number);

}
}
public class Person {
int age;
String name;

void speak(){
System.out.println("我"+age+"歲了"+"我的名字是"+name);
}
}

其中person作為父類,teacher作為子類,teacher繼承了person中的age,name,
所以在teacher類中創造的物件t可以有age,name的屬性使用。
person作為父類,超類,基類(最基礎的類);teacher作為子類,派生類。

1.1類的繼承的意義:
提高程式碼的複用性
讓類與類之間建立聯絡;從而擁有多型的特性;

1.2 JAVA的特點:
支援單繼承,並不支援多繼承;
多繼承會出現錯誤,重名,覆蓋程式碼,指代不明;導致程式碼會出現無法使用的問題;
例如下面的狀態,如果person與person1中出現同名方法會導致混亂衝突。
子類無法分辨使用什麼方法。
public class Teacher extends Person enxtends person1{

1.3 JAVA支援多層繼承:
指的是父類可以繼承另一個父類,形成一個繼承的關係。就像是一個泡泡中包裹另一個泡泡,不斷包裹下去....
懶得畫圖表達了(╯°□°)╯︵ ┻━┻總之你明白就是一層層包下去像滾元宵就行!
使用多層繼承要了解最基本的部分,以及最子類.....嘛,從基礎開始打準沒錯(大概吧)
不可以為了簡化程式碼而濫用繼承。(該打的還是dei打啦,你也沒辦法躲開的,偷懶是不可能的了ᓚᘏᗢ)
必須是類與類之間的繼承,畢竟extends可以四捨五入約等於is a....就當是遵循英語語法了。

2:super關鍵字
子類父類之間的變數同名,會出現子類的變數,這時候使用this.再引用本類變數,用super引用父類變數。
public class Person {//此處是父類
int age;
String name;
int workTime=2;//重名變數(父類)
void speak(){
System.out.println("我"+age+"歲了"+"我的名字是"+name);
}
}
public class Teacher extends Person{//此處子類繼承父類
int number;
int workTime=1;//重名變數(子類)
    void show(){
System.out.println("這是子類的數字"+this.workTime +" 這是父類的數字"+ super.workTime);
}
public static void main(String[] args) {
Teacher t=new Teacher();
t.age=18;
t.name="阿P";
t.number=238064;
t.speak();
t.show();
System.out.println("編號"+t.number);

}
}
結果輸出:

 

2.重寫

雖然說子類繼承了父類的功能,但是裡面方法卻不盡相同,此時沒有必要去定義一個新的功能,只需要進行重寫即可。

void speak(){//父類中
System.out.println("我"+age+"歲了"+"我的名字是"+name);
}
void speak() {//子類中
System.out.println("我"+age+"歲了"+"我的名字是"+name);
System.out.println("我很高興認識你。");
}
1,子類要保證方法許可權覆蓋父類或者超出。
2,靜態的方法只能夠重寫使用靜態方法;
3,過載是同名引數列表,在同一個類之中;重寫是要保證子類父類方法名保持一致;
子類初始化,父類也會執行,子類構造方法隱藏了一句super();而且在構造方法的首句。
如果父類中構造方法被賦值,那麼子類將不可以通過這種方法使用。只能手動指定。

到此結束啦!分割線----------------------------------------------------



嗯.....這周畫畫了。也放進來吧。