麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

基于Java protected的深入理解

2019-11-26 16:04:04
字體:
來源:轉載
供稿:網友
一提到訪問控制符protected,即使是初學者一般都會很自信的認為自己在這方面的理解沒有問題。那好,我們提一個問題出來看看.....

請看下面兩端代碼,其中包B中的貓和鼠都繼承了動物類。
復制代碼 代碼如下:

//代碼1:包A中有一個動物類 
package testa; 
public class Animal { 
    protected void crowl(String c){ 
        System.out.println(c); 
    } 

//代碼2:包B中有兩個類――貓類和鼠類 
package testb; 
import testa.Animal; 
class Cat extends Animal{ 


class Rat extends Animal{ 
    public void crowl(){ 
                crowl("zhi zhi"); //沒有問題,繼承了Animal中的protected方法――crowl(String) 
            Cat cat=new Cat(); 
                cat.crowl("miao miao"); //wrong, The method crowl(String) from the type Animal is not visible 
    } 


既然,貓和鼠都繼承了動物類,那么在鼠類的作用范圍內,看不到貓所繼承的crowl()方法呢?

癥結所在:
protected受訪問保護規則是很微妙的。雖然protected域對所有子類都可見。但是有一點很重要,子類只能在自己的作用范圍內訪問自己繼承的那個父類protected域,而無法到訪問別的子類(同父類的親兄弟)所繼承的protected域。 說白了就是:老鼠只能叫"zhi,zhi"。即使他能看見貓(可以在自己的作用域內創建一個cat對象),也永遠無法學會貓叫。
也就是說,cat所繼承的crowl方法在cat類作用范圍內可見。但在rat類作用范圍內不可見,即使rat,cat是親兄弟也不行。
另外:這就是為什么我們在用clone方法的時候不能簡單的直接將對象aObject.clone()出來的原因了。

總之,當B extends A的時候,在子類B的作用范圍內,只能調用本子類B定義的對象的protected方法(該方法從父類A中繼承而來)。而不能調用其他A類對象的protected 方法
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久国产 | 久久精品视频在线看99 | 亚洲影视中文字幕 | 黄色成人小视频 | 成人在线第一页 | 55夜色66夜色国产精品视频 | 草莓视频在线导航 | 国产精品久久久久久久午夜片 | 素人视频在线观看免费 | 亚洲一级成人 | 一区二区三区国产视频 | 亚洲一区二区免费 | 欧美成人精品一区二区男人小说 | 看全色黄大色黄大片女图片 | 本站只有精品 | 毛片在线视频免费观看 | chinese 军人 gay xx 呻吟 | 99精品在线免费 | 娇妻被各种姿势c到高潮小说 | 欧美一级不卡视频 | 国产一区精品在线观看 | 成人毛片网站 | 亚洲国产视频网 | 日本网站一区 | 在线观看av国产一区二区 | 蜜桃视频观看麻豆 | 久草视频福利在线观看 | 九九热精| 欧美一级片在线 | 久色视频网站 | 欧美另类综合 | 欧美精品在线免费观看 | 性欧美xxxx极品摘花 | 精品国内视频 | 欧美一区二区黄色 | av在线一区二区三区四区 | 五月天影院,久久综合, | 毛片视频在线免费观看 | 在线成人一区二区 | 视频一区二区三区在线播放 | 色网免费观看 |