程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java訪問權限的問題,java訪問權限問題

java訪問權限的問題,java訪問權限問題

編輯:JAVA綜合教程

java訪問權限的問題,java訪問權限問題


java訪問權限的問題

java訪問權限修飾符

背景:

關於java中的四種訪問修飾符,public ,default ,protected ,private的作用范圍本以為很熟悉了,但碰到了這樣一段代碼:

package pac1;

public class Parent {

    protected int i;
    protected class Inner{
       
    }
}

package pac2;

import pac1.Parent;

public class Child extends Parent {
    public static void main(String args[]){
        new Child().i=0;
        Inner i = new Parent().new Inner();
    }
}

問題

代碼的意思是,父類與子類不在一個包,父類中有protected的內部類,現在想在子類中生成父類中內部類對象。但是發現報這錯誤:

Error:(8, 28) java: Inner()可以在pac1.Parent.Inner中訪問protected

思考

protected的訪問權限是這說的,同一個包下是可以隨意訪問的,其他包下只有之類可以訪問。的確Inner i = new Parent().new Inner();左邊是沒有問題的,但是右邊是內部類生成方法,為什麼不能訪呢?
原來我在這裡只考慮了Parent和Child的包位置和繼承關系,而沒有考慮內部類和Child也是不同包,而Inner的構造函數訪問權限不為public,因此在不同包又沒有繼關系的Child是不能生成Inner的。

解決

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved