Java中方法的覆蓋

“覆蓋私有方法”是有問題的:

public class Student extends Person {

	void print(){
		System.out.println("我是子類的print");
	}
	
	public static void main(String[] args){
		Student myTest = new Student();
		myTest.fun();
	}
}

class Person{
	public void fun(){
		print();
	}
	
	private void print(){
		System.out.println("我是父類的print");
	}
	
}

輸出:

我是父類的print

         我們期望的是輸出我是子類的print,但是由於private方法被自動認爲是final方法,而且對導出類是屏蔽的。因此,在這種情況下,Student中的print()方法就是一個全新的方法。

         只有非private方法纔可以被覆蓋;雖然編譯器不會報錯,但是也不會按照我們所期望的來執行。在導出類中,對於基類中的private方法,最好採用不同的名字。

發佈了60 篇原創文章 · 獲贊 12 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章