當前位置:首頁 » 密碼管理 » 內部類怎麼訪問

內部類怎麼訪問

發布時間: 2022-12-16 09:46:19

『壹』 java 靜態內部類的使用

Java語言允許在類中再定義類,這種在其它類內部定義的類就叫內部類。內部類又分為:常規內部類、局部內部類、匿名內部類和靜態嵌套類四種。

1、靜態內部類定義

靜態內部類,定義在類中,任何方法外,用static定義;靜態內部類只能訪問外部類的靜態成員。

生成(new)一個靜態內部類不需要外部類成員:這是靜態內部類和成員內部類的區別。靜態內部類的對象可以直接生成:Outer.Inner in=new Outer.Inner();而不需要通過生成外部類對象來生成。這樣實際上使靜態內部類成為了一個頂級類。可以定義私有靜態內部類。

2、java實現靜態內部類注意事項

將某個內部類定義為靜態類,跟將其他類定義為靜態類的方法基本相同,引用規則也基本一致。不過其細節方面仍然有很大的不同。具體來說,主要有如下幾個地方要引起注意。

1)一般情況下,如果一個內部類不是被定義成靜態內部類,那麼在定義成員變數或者成員方法的時候,是不能夠被定義成靜態成員變數與靜態成員方法的。也就是說,在非靜態內部類中不可以聲明靜態成員

2)一般非靜態外部類可以隨意訪問其外部類的成員變數以及方法(包括聲明為private的方法),但是如果一個內部類被聲明為static,則其在訪問包括自身的外部類會有諸多的限制。靜態內部類不能訪問其外部類的非靜態成員變數和方法

3)在一個類中創建非靜態成員內部類的時候,有一個強制性的規定,即內部類的實例一定要綁定在外部類的實例中。然後要在一個外部類中定義一個靜態的內部類,不需要利用關鍵字new來創建內部類的實例。即在創建靜態類內部對象時,不需要其外部類的對象

3、靜態內部類示例

java在實現LinkedList時使用了如下內部類:

public class LinkedList<E>

extends AbstractSequentialList<E>

implements List<E>, Deque<E>, Cloneable, java.io.Serializable

{

........

private static class Entry<E> {

E element;

Entry<E> next;

Entry<E> previous;

Entry(E element, Entry<E> next, Entry<E> previous) {

this.element = element;

this.next = next;

this.previous = previous;

}

}

private Entry<E> addBefore(E e, Entry<E> entry) {

Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);

newEntry.previous.next = newEntry;

newEntry.next.previous = newEntry;

size++;

modCount++;

return newEntry;

}

........

}

這里即靜態內部類的典型用法

『貳』 java 主方法怎麼調用內部類的方法

System.out.println(x);//這個是55

System.out.println(In.x);//這個是9

樓主這兩行是對的,樓上是不用兄弟認為人家這兒錯了?


1,後面那個是無法做到的那個x是方法的局部變數,在進入方法時被推到棧里,方法結束後就出棧了。除非有方式可以跑一個在主方法中的線程監控當前棧中變數,就像是Debug一樣,我也研究好久這個,不過沒發現有。

2, 也像1一樣沒有侵入性,你可以用位元組碼框架去操作類,動態地改變方法的行為,也就是說你可以在main方法中用程序語言去改變doit(x)方法里所做的事情。

3, 再侵入點兒,你可以傳進那個doit(int)方法一個Callback,你明白我意思?給你看個回調式:

publicclassHelloJava{
privateinterfaceListener{
publicvoidlistenDoit(intx);
}
privatestaticintx=55;
privateclassIn{
privateListenerlistener;
privatestaticfinalintx=9;
publicIn(Listenerlistener){this.listener=listener;}
publicvoiddoit(intx){
listener.listenDoit(x);
x=6;//這個X和上一行的應該是同一個吧?怎麼在主方法里輸出這個量?
listener.listenDoit(x);
HelloJava.this.x++;
}
}
publicstaticvoidmain(String[]args){
System.out.println(x);//這個是55
System.out.println(In.x);//這個是9
Inin=newHelloJava().newIn(newListener(){
@Override
publicvoidlistenDoit(intx){
System.out.println(x);
}});
in.doit(0);
System.out.println(x);//這個是55
System.out.println(In.x);//這個是10
}
}

還有許多方式可以做到,比如代理模式等等,不過都大同小異。該方法好處是不改變方法的原定義模型。如返回值從void改成int,如果doit的返回值本身就是String,要返回個其他的東西,怎麼去改變返回值完成?

另外運行一下會發現最後兩行輸出不是55 10, 而是56, 9,你就知道HelloJava.this.x++;做的是什麼了。

4,然後就是樓上朋友們都說的方式,返回值。

『叄』 java 兩個內部類之間怎麼互相訪問

你寫兩個內部類的話,後面的可以調用前面的,前面的不能調用後面的
main()方法是順序執行的

『肆』 c++內部類怎麼訪問外部類

內部類本身就可以直接訪問外部類啊,如果你說的不是一個繼承體系下的基類或者當前類部分的話,請使用傳參數方式了。

『伍』 java中我把外部類方法私有了 內部類如何訪問該方法 代碼如下

private int x=3;
int a;
static class Inner
{
int x = 4;

public void function() {
int x = 6;
System.out.println(x);
System.out.println(this.x);
// System.out.println(Outer.this.x);//內部類可以直接訪問外部類中的成員,包括私有。(訪問私有)
// method();//內部類可以直接訪問外部類中的成員,包括私有。(該訪問成員)

}
}
public static void main(String[] args){
new Inner().function();
}
只能這樣做,把內部類改成 靜態的 直接new一個類 調方法

『陸』 java內部類怎麼使用

1.內部類的方法可以訪問它所在的外部類中的所有域,包括私有型別的;
2.對於同一個包中的其它類它是隱藏的;
3. 匿名的內部類可以讓我們很方便的定義事件響應(call back),這在GUI編程中很常見
interface OutInterface{ //定義一個介面 public void f(); } public class InterfaceInner { //主類 public static void main(String args[]){ OuterClass2 out=new OuterClass2(); OutInterface outinter=out.doit(); outinter.f(); } } class OuterClass2{ //定義一個內部類,並且介面OutInterface private class InnerClass implements OutInterface{ InnerClass(String s){ System.out.println(s); } public void f(){ System.out.println("訪問內部類中的f()方法"); } } public OutInterface doit(){ //方法返回介面 return new InnerClass("訪問內部類構造方法"); } }

『柒』 c++內部類訪問外部類的方法

內部類就是外部類的友元類,內部類可以通過外部類的對象來訪問外部類的所有成員。

『捌』 內部類裡面的方法怎麼訪問外部類成員,求解!!!

在內部類使用this表示的是對內部類自身的引用,如果想要獲取外部類的引用,應當使用Outer.this,所以訪問外部類的方法:
Outer.this.xxxx()

熱點內容
編程大家族 發布:2025-07-26 20:45:36 瀏覽:623
iperflinux 發布:2025-07-26 20:35:05 瀏覽:651
網站源碼修改 發布:2025-07-26 20:13:00 瀏覽:429
linux查看文件夾結構圖 發布:2025-07-26 20:04:48 瀏覽:636
如何用電腦模擬安卓手機軟體 發布:2025-07-26 19:59:34 瀏覽:437
文件夾軟 發布:2025-07-26 19:59:33 瀏覽:775
資料庫清單 發布:2025-07-26 19:55:53 瀏覽:217
第一個視頻怎麼加入伺服器 發布:2025-07-26 19:50:33 瀏覽:865
mysql存儲過程print 發布:2025-07-26 19:50:29 瀏覽:391
xp共享密碼是什麼 發布:2025-07-26 19:36:21 瀏覽:836