java繼承
繼承java面向對象三大特性之一,在程式中将多個類中的擁有相同的屬性和方法進行提取,放入一個父類中,通過extends關鍵字實作對父類的繼承使用父類中的屬性和方法,達到最大限度的代碼重用。
Class father{
public String name;
protected String sex;
private int age;
public void print(){//代碼塊}
//........提取出共有的屬性和方法
//public修飾符是最大通路權限
//private修飾符隻能在本類中使用
//protected修飾符定義同一個包下或是繼承本類的子類可以使用
}
class son extends father{
private String color;
public void info(){}
//定義son類繼承father類
//子類擁有父類的非private修飾的屬性和方法使用this或super調用
//子類除了擁有父類的屬性和方法也可以定義自身特有的屬性和方法
}
繼承的特性
定義父類的子類繼承者時,在子類的構造方法中會預設 出現super()調用父類的無參構造方法(隐式),即使沒有顯示的調用,系統也會預設調用。
class father{
String name;
int age;
public father(Strning name){
this.name=name;
}
}
class son extends father{
string sex;
public son(String name,String sex){
super(name); //自動生成調用父類無參構造方法或添加參數調用父類有參構造
this.sex=sex;
}
}
抽象類和抽象方法
java 中使用abstract關鍵字定義一個抽象類或者抽象方法,abstract不可以修飾屬性和構造方法。
抽象類的特性,抽象類不能被執行個體化,抽象方法不能有方法體,抽象類中可以有一個或多個抽象和非抽象方法,也可以有構造函數。
當一個類繼承抽象類後,抽象類的抽象方法在繼承類中必須有實作(重寫)。
//定義一個抽象類
public abstract class father{
public abstract void show();//抽象方法不能大括号是一個閉合的沒有方法體的方法
public void info(){
//方法體
}
}
//定義一個子類繼承抽象類
public class son extends father{
//重寫繼承自抽象類father的抽象方法
public override void show(){
//實作父類抽象方法的方法體
}
}
final修飾符
在java中final修飾符可以修飾變量,方法,類,不能修飾構造方法。
final修飾的變量(包括成員變量和局部變量)将變成常量,隻能指派一次
final修飾的方法在繼承的子類中不能被重寫
final修飾的類不能再被繼承
若final修飾一個引用型變量對象,修改對象屬性是否發生錯誤?
final Dog dog=new Dog("歐歐");
dog.name="美美";
dog=new Dog("壓壓");
//運作結果為第三行錯誤,final修飾對象不能再指向另一個對象,與修改對象的屬性值無關,是以第二行正确。
final 修飾對象儲存的實際為對象的位址,即指向的對象發生變化,那麼位址就會發生變化是以報錯,與對象内儲存的屬 性無關是以屬性值可變。