目錄
繼承:
super關鍵字:
方法重寫:
繼承特點:
繼承構造方法:
final關鍵字:
繼承:
意義:讓類于類之間產生父類于子類的關系,子類可以直接使用父類中的非私有成員(包括方法與成員變量)? 。
extends關鍵字就是定義聲明父類。
格式:public class 子類 extends 父類。
?
對于基礎的我就不贅述了,我們直接講一些實用一點的操作。
super關鍵字:
舉個例子
class Fu{int num=10;
}class Zi extends Fu
{int num=20;public void Fuc(){System.out.println(num);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Fuc();}
這里面的主方法會打印什么呢?
如果我們想打印父類里的10我們需要用到super
結果就會變為10
可見super可以用來區分父子類里面的相同成員。
方法重寫:
這里的方法重寫與方法重載不一樣喲!
當字父子類出現完全一摸一樣的方法時, 在創建子類對象調用方法時會優先調用子類的方法的邏輯。這其實就是子類的方法對父類的方法進行了方法重寫。且我們通過@override識別方法重寫。
如:父子類都有Fuc方法
?
class Fu{int num=10;public void Fuc(){System.out.println("666");}
}class Zi extends Fu
{int num=20;@Override//如果這沒報錯就是方法重寫public void Fuc(){System.out.println(555);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Fuc();}
打印的是555
那我們怎么調用到父類的方法呢,就是用super
?
class Zi extends Fu
{int num=20;@Overridepublic void Fuc(){super.Fuc();System.out.println(555);}
}
兩個方法都打印了。
其實方法重寫作用就是我們對父類方法的修改和增強。
tip:私有的父類不能重寫,子類在重寫時訪問權限一定要大于等于父類的方法。
繼承特點:
Java繼承只支持單繼承,不支持多繼承,但支持多層繼承。
單繼承,多繼承:就是只能繼承一個父類,不能繼承多個類。
多層繼承就像這個圖一樣:
繼承構造方法:
構造方法不支持繼承,所以構造方法需要自己寫,子類在初始化之前需要對父類進行初始化,而且所有的類構造方法中有隱藏了一句supper()代碼,這是用來調用父類的無參構造。
?
我們先簡單理解一下super();
class Fu{int a;int b;public Fu() {}
}class Zi extends Fu
{int c;int d;public Zi() {}public void Func(){System.out.println(""+a+b+c+d);}
}public static void main(String[] args) {Zi z1=new Zi();z1.Func();}
這次會打印什么呢?
可見他將abcd全部都初始化了,就證明了調用了子父類的無參構造。
?
那為什么說所有類都有super()呢?
其實所有的類,直接或間接的繼承了object類,這里不多說,但是可以證明的是每個類都有除本身外其他的一些方法如:
final關鍵字:
對于final關鍵字其實就感覺像是c/c++里的const
特性:
1.修飾方法就表明是最終方法,該方法不能被重寫。
2.修飾類就表明是最終類,該類不能被繼承。
3.修飾變量說明是常量,不能再次被賦值(類似于const修飾的變量)。
tip:final修飾成員變量時不能被修飾默認值,說明就被修飾的變量一定要初始化,要么直接聲明定義在一起,要么在構造方法里初始化。
final修飾的規范:全用大寫,用下劃線來分割單詞如:MAX_NUM