更新時(shí)間:2022-07-28 來(lái)源:黑馬程序員 瀏覽量:
子類(lèi)重寫(xiě)父類(lèi)方法時(shí),不能使用比父類(lèi)中被重寫(xiě)方法更嚴(yán)格的訪(fǎng)問(wèn)權(quán)限。例如,父類(lèi)中的方法是public權(quán)限,子類(lèi)的方法就不能是private權(quán)限。如果子類(lèi)在重寫(xiě)父類(lèi)方法時(shí)定義的權(quán)限縮小,則在編譯時(shí)將出現(xiàn)錯(cuò)誤提示。下面對(duì)文件4-3進(jìn)行修改,修改后的代碼如文件4-4所示。
文件4-4 Example04.java
//定義Animal類(lèi) class Animal { //定義動(dòng)物叫的方法 public void shout () { System.out.println("動(dòng)物發(fā)出叫聲"); } } // 定義Dog類(lèi)繼承Animal類(lèi) class Dog extends Animal { //重寫(xiě)父類(lèi)Animal中的shout () 方法 private void shout () { System.out.println("汪汪汪......") } } //定義測(cè)試類(lèi) public class Example04 { public static void main (String[] args) { Dog dog = new Dog (); //創(chuàng)建Dog類(lèi)的實(shí)例對(duì)象 dog.shout (); //調(diào)用dog重寫(xiě)的shout()方法 } }
編譯文件4-4,編譯報(bào)錯(cuò),如圖4-5所示。
圖4-5 文件4-4編譯報(bào)錯(cuò)
在文件4-4中,第4行代碼在Animal類(lèi)中定義了一個(gè)shout()方法并將訪(fǎng)問(wèn)權(quán)限定義為public,第9~14行代碼定義了一個(gè)Dog類(lèi)并繼承Animal類(lèi),第11行代碼在聲明shout()方法時(shí),將shout()方法的訪(fǎng)問(wèn)權(quán)限定義為private。如圖4-5所示,編譯文件會(huì)報(bào)錯(cuò),這是因?yàn)樽宇?lèi)重寫(xiě)父類(lèi)方法時(shí),不能使用比父類(lèi)中被重寫(xiě)的方法更嚴(yán)格的訪(fǎng)問(wèn)權(quán)限。
Java中4種不同級(jí)別的訪(fǎng)問(wèn)控制符
2022-07-28計(jì)算機(jī)網(wǎng)絡(luò)的功能有哪些?
2022-07-27MapReduce分布式計(jì)算框架:MapReduce運(yùn)行模式是什么?
2022-07-27MySQL數(shù)據(jù)庫(kù)存儲(chǔ)引擎【InnoDB/MyISAM/MEMORY 】
2022-07-25數(shù)據(jù)庫(kù)中事務(wù)的四大特性分別是什么?
2022-07-25Java現(xiàn)在還火嗎?目前市場(chǎng)趨勢(shì)怎么樣?
2022-07-22