出现这个错误的解决方法No enclosing instance of type 类名 is accessible. Must qualify the allocation with
生活随笔
收集整理的這篇文章主要介紹了
出现这个错误的解决方法No enclosing instance of type 类名 is accessible. Must qualify the allocation with
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
方法一:分為兩個class 不用內(nèi)部類
方法二:給內(nèi)部類加個static,因為main方法是靜態(tài)的。
?在一個類的靜態(tài)成員中去訪問非靜態(tài)成員之所以會出錯是因為在類的非靜態(tài)成員不存在的時候靜態(tài)成員就已經(jīng)存在了
package kgc3;import kgc3.Account.Drawing1;//不安全的取錢 //兩個人去銀行取錢 public class TestAcount {// 賬戶public static void main(String[] args) {Account account1= new Account(100, "吃飯基金");Thread gird = new Drawing1(account1, 50, "媳婦");Thread you = new Drawing1(account1, 50, "我");} }//賬戶 class Account {int money;String name;public Account(int money, String name) {this.money = money;this.name = name;} } //銀行 :模擬取款 class Drawing1 extends Thread {Account account;// 賬戶int drawingMoney;// 取了多少錢int nowMoney;// 手里的錢public Drawing1() {super();}public Drawing1(Account account, int drawingMoney,String name) {super(name);this.account = account;this.drawingMoney = drawingMoney;}@Overridepublic void run() {// 判斷有木有錢if (account.money - drawingMoney < 0) {System.out.println(this.getName() + "錢不夠 取不了");return;}// 卡內(nèi)余額等于 余額-你取的錢account.money = account.money - drawingMoney;// 你手里的錢 等于 手里的錢+取的錢nowMoney = nowMoney + drawingMoney;System.out.println(account.name + "余額為—————" + account.money);System.out.println(this.getName() + "手里的錢:——" + nowMoney);}} 內(nèi)部類 內(nèi)部類:一個類中的類;內(nèi)部類生成文件:外部類名$內(nèi)部類名.class種類成員內(nèi)部類 當(dāng)內(nèi)部類訪問外部類時,可以不受訪問控制符的影響,直接訪問屬性與方法 當(dāng)外部類變量與方法和內(nèi)部類同名,內(nèi)部類默認(rèn)訪問自己的成員變量或方法,引用外部變量使用時加類名.this:類名.this.變量名、類名.this.方法名() 在其他類創(chuàng)建一類中的內(nèi)部類:內(nèi)部類 對象名 = new 外部類對象( ).new 內(nèi)部類( ) 外部類不能直接使用內(nèi)部類的成員和方法,可先創(chuàng)建內(nèi)部類的對象,然后通過內(nèi)部類的對象來訪問其成員變量和方法。 靜態(tài)內(nèi)部類 靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員,但可以通過 new 外部類().成員 的方式訪問 外部類的靜態(tài)成員與內(nèi)部類的成員名稱相同,可通過“類名.靜態(tài)成員”訪問外部類的靜態(tài)成員 創(chuàng)建靜態(tài)內(nèi)部類的對象時,不需要通過外部類的對象,可以直接創(chuàng)建 內(nèi)部類 對象名= new 內(nèi)部類(); 方法內(nèi)部類 在類的方法中定義,只能在同一個作用域使用,不存在外部可見性 沒有訪問修飾符,但可以使用final 或 abstract修飾。 不能在方法內(nèi)部類中創(chuàng)建可變的局部變量。 可以訪問外圍類的成員變量。如果是static方法,則只能訪問static修飾的成員變量。 匿名內(nèi)部類 使用匿名內(nèi)部類時,我們必須是繼承一個類或者實現(xiàn)一個接口,但是兩者不可兼得,同時也只能繼承一個類或者實現(xiàn)一個接口。 匿名內(nèi)部類中是不能定義構(gòu)造函數(shù)的。 匿名內(nèi)部類中不能存在任何的靜態(tài)成員變量和靜態(tài)方法。 匿名內(nèi)部類為局部內(nèi)部類(即方法內(nèi)部類),所以局部內(nèi)部類的所有限制同樣對匿名內(nèi)部類生效。 匿名內(nèi)部類不能是抽象的,它必須要實現(xiàn)繼承的類或者實現(xiàn)的接口的所有抽象方法。 當(dāng)所在的方法的形參需要被內(nèi)部類里面使用時,該形參必須為final。 可以寫代碼塊,初始化匿名內(nèi)部類 匿名內(nèi)部類可以很方便的定義回調(diào)。 使用內(nèi)部類可以非常方便的編寫事件驅(qū)動程序。 好處內(nèi)部類提供了更好的封裝,可以把內(nèi)部類隱藏在外部類之內(nèi),不允許同一個包中的其他類訪問該類。 內(nèi)部類的方法可以直接訪問外部類的所有數(shù)據(jù),包括私有的數(shù)據(jù)。 內(nèi)部類所實現(xiàn)的功能使用外部類同樣可以實現(xiàn),只是有時使用內(nèi)部類更方便。?
,訪問一個內(nèi)存中不存在的東西當(dāng)然會出錯。
總結(jié)
以上是生活随笔為你收集整理的出现这个错误的解决方法No enclosing instance of type 类名 is accessible. Must qualify the allocation with的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国优秀教师对中国家长的建议
- 下一篇: Some MATLAB tips (二)