構造方法里的super()方法


為什么經常會遇到有的構造函數會有super(),而有的卻沒有,其實super就比如 對數函數,log的底數為10,如果為10 ,我們可寫可不寫,如果不為10,那么我們就要加上底數

  1. 在子類構造方法中,super();是默認省略的,(super();的作用是繼承父類構造方法)。記住:默認省略不是不存在,而是存在,不過被省略了。

  2. 因為super();存在,所以如果父類是有參構造方法,那問題就出現了,因為子類的構造過程中必須調用父類的構造方法,如果有參,那么不能省略。就要自己調用父類有參構造方法。

  要講super就不能不提this,下面從4個角度講解一下super(需要對比的時候拿this對比一下,加深理解)
1. super關鍵字表示超(父)類的意思。this變量代表對象本身。
2. super訪問父類被子類隱藏的變量或覆蓋的方法。當前類如果是從超類繼承而來的,當調用super.XX()就是調用基類版本的XX()方法。其中超類是最近的父類。
3.調用super() 父類構造函數的時候只能調用在子類構造函數的第一行
4.this只能在類中的非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能出現this。並且this只和特定的對象關聯,而不和類關聯,同一個類的不同對象有不同的this

 1    class Person {  
 2        protected void print() {  
 3           System.out.println("The print() in class Person.");  
 4        }  
 5    }         
 6    public class DemoSuper extends Person {        
 7        public DemoSuper(){        
 8           super(); //調用父類的構造方法,而且放第一行,如果不寫,系統自動加  
 9        }  
10        public void print() {  
11           System.out.println("The print() in class DemoSuper.");  
12           super.print();// 調用父類的方法  
13        }         
14        public static void main(String[] args) {  
15           DemoSuper ds = new DemoSuper();  
16           ds.print();  
17        }  
18    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM