java面向对象super_【JavaSE】面向对象之super、final
一、super關鍵字
它是一個指代變量,用于在子類中指代父類對象。
1.作用
指代父類對象
區分子父類同名的成員變量,區分父類中成員變量和子類中同名的局部變量
2.使用
與this相同,調用父類成員變量和成員方法:super.xx super.xxx()
調用父類構造器 super(xxx)
如果子類沒有顯示調用父類構造器,系統會默認在子類構造器首行調用父類空構造器
super.屬性名//訪問父類的屬性
super.方法名(參數);//調用父類的方法。
super(參數);//調用父類的構造方法。
//初始化當前對象的父類型特征
super能出現在實例方法和構造方法中,不能使用在靜態方法中。且大部分情況下可以省略。
super()只能出現在構造方法第一行,通過當前的構造方法去調用、"父類"中其它的構造方法,目的是:代碼復用(創建子類對象的時候,先初始化父類型特征)。
建議手動寫無參構造方法
一個類如果沒有手動提供任何構造方法,系統會默認提供一個無參數構造方法。
一個類如果手動提供了一個構造方法,那么無參數構造系統將不再提供。
重要的結論:
當一個構造方法第一行既沒有this()又沒有super()的話,默認會有一個super();表示通過當前子類的構造方法調用父類的無參數構造方法。所以必須保證父類的無參數構造方法是存在的。
注意:this ()和super()不能共存,它們都是只能出現在構造方法第一行。
public class SuperTest {
public int num = 20;
public SuperTest() {
}
public SuperTest(int num) {
this.num = num;
}
public void test(){
System.out.println(num);
}
}
class superSon extends SuperTest{
private int num3 = 20;
public superSon() {
super();
}
public superSon(int num) {
this();//解決 this()和super()不能共存問題
}
}
二、final關鍵字
表示最終的,不可被修改的。
1.被final修飾的變量為常量(標識符規范)
可以修飾局部變量也可以修飾成員變量
public class FinalTest {
private final int num = 50;
public void test(){
final int num2 = 20;
}
}
image.png
由圖可見,在為被final修飾的變量重新賦值時,會報編譯錯誤。
2.被final修飾后的方法不能被重寫
public class FinalTest {
public final void test(){
int num2 = 20;
}
}
class FinalSon extends FinalTest{
//報編譯異常,此重寫不可行
/*public void test(){
}*/
}
image.png
3.被final修飾的類不能被重寫
public final class FinalTest {
public void test(){
int num2 = 20;
}
}
class FinalSon extends FinalTest{
}
image.png
由此可見,被final修飾的類,不可被繼承,所以也稱這種被final修飾的類為“太監類”(沒兒子 /狗頭)。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java面向对象super_【JavaSE】面向对象之super、final的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 资料分析
- 下一篇: java 凑整_Java语言中的取整运算