重寫都是方法的重寫,與屬性無關java
父類的引用能夠指向子類,就是new一個子類的對象數據類型能夠寫爲父類,new子類是能夠指向父類的ide
重寫的快捷鍵:Alt+insert函數
對靜態方法調用的時候,調用的方法只和定義的參數類型有關,但對非靜態方法調用的時候,調用的方法都是new了的對象的方法指針
靜態方法和非靜態方法的區別很大,不要隨意去寫靜態方法code
重寫是對非靜態方法的,沒有靜態方法的重寫(目前死記)對象
子類重寫了父類的方法,父類原來的那個方法就不能被調用了繼承
注意:io
爲何要重寫:編譯
理解:class
靜態方法屬於靜態綁定,在編譯階段已經肯定函數名和地址,靜態方法固然是能夠被繼承的,可是卻不能被重寫,爲何那? 由於重寫的意思是從新定義父類的虛函數,可是虛函數是動態綁定的,而靜態方法是靜態綁定的,因此靜態函數必然不能是虛函數,也就不存在所說的重寫了.你在子類中從新寫一個同名的函數,覆蓋了父類的同名函數,在使用子類指針進行調用的時候,調用的就是子類的這個靜態方法
例如:
//父類 public class b { public void test(){ System.out.println("b"); } } //子類 public class a extends b{ @Override //註解:有功能的註釋 public void test() { System.out.println("a"); } } //執行類 public class zhixing { public static void main(String[] args) { a a = new a(); a.test();//輸出的就是a了,由於子類重寫了父類,就至關於從新改寫了父類,重寫後就掉不到父類的那個方法了 } }