亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 var“first” 上的“private”關鍵字不起作用?

為什么我的 var“first” 上的“private”關鍵字不起作用?

慕村225694 2024-01-28 16:47:43
這些天我正在使用 CS61b。我被訪問控制的講座困住了。我的變量first和類IntNode上的“private”關鍵字無法正常工作。在谷歌上搜索但一無所獲。public class SLList {    private IntNode first;    /**     * If the nested class never uses any instance variables or methods of the outer     * class, declare it static.     */    private static class IntNode {        public IntNode next;        public int item;        public IntNode(int i, IntNode n) {            next = n;            item = i;        }    }    public SLList(int x) {        first = new IntNode(x, null);    }    public void addFirst(int x) {        first = new IntNode(x, first);    }    public int getFirst() {        return first.item;    }/** ----------------SIZE---------------------- */    private int size(IntNode L) {        if (L.next == null) {            return 1;        }        return 1 + size(L.next);    }    public int size() {        return size(first);    }/**-------------------SIZE------------------- *//**---------------add LAST ------------------*//** how to solve null pointer expectation? */    public void addLast(int x) {        IntNode p=first;        while(p.next!=null){            p=p.next;        }        p.next=new IntNode(x, null);    }/**---------------add LAST ------------------*/    public static void main(String[] args) {        SLList L = new SLList(5);        L.addFirst(10);        L.addFirst(15);        System.out.println(L.getFirst());        System.out.println(L.size());        L.addLast(20);        L.first.next.next = L.first.next;  /** <----- I can still get√ access to first. */    }}我預計會出現錯誤:first has private class in SLList,但我沒有任何錯誤。
查看完整描述

1 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

請參閱Java 語言規范第 6.6.1 節

僅當類型可訪問并且聲明成員或構造函數允許訪問時,引用類型的成員(類、接口、字段或方法)或類類型的構造函數才可訪問:

  • 如果成員或構造函數被聲明為公共,則允許訪問。

  • 缺少訪問修飾符的接口的所有成員都是隱式公共的。

  • 否則,如果成員或構造函數被聲明為受保護,則僅當滿足以下條件之一時才允許訪問:

    • 對成員或構造函數的訪問發生在包含聲明受保護成員或構造函數的類的包內。

    • 訪問正確,如§6.6.2中所述。

  • 否則,如果使用包訪問來聲明成員或構造函數,則僅當訪問發生在聲明該類型的包內時才允許訪問。

    沒有訪問修飾符聲明的類成員或構造函數隱式具有包訪問權限。

  • 否則,成員或構造函數被聲明為 private,并且當且僅當訪問發生在包含成員或構造函數聲明的頂級類型(第 7.6 節)的主體內時,才允許訪問。

(強調我的)

由于您的訪問first位于同一頂級類型內,因此您可以毫無問題、錯誤或任何其他情況地訪問它。


查看完整回答
反對 回復 2024-01-28
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號