继承extends ,this super final 关键字,abstract抽象类,override方法重写
繼承extends ?
私有成員不能被繼承
?總結:子類方法中,使用變量的原則是:就近原則
1 package review06; 2 /* 3 私有成員不能被繼承 4 子類和父類有同名的成員變量:在子類的方法中,優先使用子類的成員變量 5 當子類的方法中有和成員變量重名的局部變量時,優先使用局部變量 6 總結:子類方法中,使用變量的原則是:就近原則 7 8 */ 9 class Father{ 10 private int num = 10;//私有成員變量不能被繼承 11 int num1 = 11; 12 public void method(){ 13 int num2 = 2; 14 System.out.println(num2); 15 } 16 } 17 class Son extends Father{ 18 int num1 = 12; 19 public void show(){ 20 num1 = 13; 21 System.out.println(num1); 22 } 23 } 24 public class ExtendsDemo2 { 25 public static void main(String[] args) { 26 Son s = new Son(); 27 s.show(); 28 s.method(); 29 30 } 31 } 繼承extends?
?
this ?super ?final 關鍵字
?this只能用于方法方法體內。當一個對象創建后,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是 this。因此,this只能在類中的非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能出現this。并且this只和特定的對象關聯,而不和類關聯,同一個類的不同對象有不同的this。
?super 關鍵字 父類對象內存空間的標識
子類創建對象時,為什么還需要把父類也在一片空間中創建出來???
就是由于子類對象有可能使用到父類的成員變量,
而父類的成員必須在堆內存中存在,所以父類對象必須被首先創建出來
而這個過程是虛擬機自動完成的./*
super的應用
構造方法不能被繼承
super(...):顯式的去調用父類的帶參構造方法
子類的所有構造方法,默認情況下,第一條語句都是super();
一旦父類提供了任何構造方法,就沒有默認的空參構造,super()出錯.
解決方法:
1.手動提供空參構造
2.使用super調用父類的其它構造方法
*/
? final 修飾類:終極類,不能被繼承
final 修飾成員方法:不能被覆蓋(重寫)
final 修飾變量:只能被賦值一次(自定義常量)
final修飾的有三個地方可以賦值:
1.定義的時候就賦值
2.構造代碼塊中賦值
3.構造方法中賦值
abstract抽象類
抽象類:包含抽象方法的類就是抽象類
抽象方法是子類自己去實現,而父類只規定方法簽名.
//實現子類
//子類如果是非抽象類的話,那么一定要實現父類中所有的抽象方法,
//但是,如果子類也是抽象類,那么可以不實現父類中所有的抽象方法
Animal dog2 = new Dog();
//dog2.show1();//向上造型,創建的對象,子類中的特有方法無法調用
?
override方法重寫
子類出現和父類方法簽名一模一樣的方法時,父類的方法被覆蓋,可以super顯式調用
靜態方法中不能出現super/this關鍵字
?
1 /* 2 子類出現和父類方法簽名一模一樣的方法時,父類的方法被覆蓋,可以super顯式調用 3 4 */ 5 class Father{ 6 private void show(){ 7 System.out.println("Father show()"); 8 } 9 void method(){ 10 System.out.println("Father method()"); 11 } 12 static void function(){ 13 System.out.println("Father function()"); 14 } 15 } 16 class Son extends Father{ 17 private void show(){ 18 System.out.println("Son show()"); 19 } 20 void method(){ 21 super.method();// 22 System.out.println("Son method()"); 23 } 24 static void function(){ 25 // super.function();//靜態方法中不能出現super/this關鍵字 26 System.out.println("Son function()"); 27 } 28 } 29 public class OverrideDemo1{ 30 public static void main(String[] args){ 31 Son s = new Son(); 32 s.method(); 33 s.function(); 34 } 35 } override方法重寫?
轉載于:https://www.cnblogs.com/star521/p/8742888.html
總結
以上是生活随笔為你收集整理的继承extends ,this super final 关键字,abstract抽象类,override方法重写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue2+VueRouter2+webp
- 下一篇: VC++取MD5算法记录下以后用得到(转