Java中內部類

2021-06-22 11:28:56 字數 2043 閱讀 1888

內部類的規則:

1.內部類可以直接訪問外部類中的成員,包括私有。

之所以可以直接訪問外部類中的成員,是因為內部類中持有乙個外部類的引用,格式:外部類名.this

2.外部類要訪問內部類,必須建立內部類物件

訪問格式:

1.當內部類定義在外部類的成員位置了,而且非私有,可以在外部其他類中。

可以直接建立內部類物件。

格式:外部類類名.內部類名  變數名= new 外部類物件.new 內部類物件。

outer.inner out = new outer().new inner();

2.當內部類在成員位置上,就可以被成員修飾符所修飾,

比如private:將內部類在外部類中進行封裝。

static:內部類就具備了static的特性。

當內部類被static 修飾後,只能訪問外部類中的static成員。出現了訪問侷限。

在外部其它類中,如何訪問static內部類的非靜態成員:

new outer2.inner().funciton();

在外部其它類中,如何訪問static內部類的靜態成員:

outer2.inner.funciton();

注意:當內部類中的定義了static成員,該內部類必須是靜態的。

當外部類中的靜態方法訪問內部類時,內部類也必須是靜態的。

當描述事物時,事物的內部還有事物,該事物用內部類來描述

因為內部事務在使用外部使用的內容。

class body }}

public class innerclassdemo

}靜態內部內**:

package com.heima.inner;

import com.heima.inner.outer.inner;

class outer2 }}

public class innerclassdemo2

}

區域性內部類:

內部類定義在區域性時,

1.不可以被成員修飾符修飾

2.可以直接訪問外部類中的成員,因為還持有外部類中的引用。

但是不可以訪問訪問它所在的區域性中(方法中)的變數。只能訪問被final修飾的區域性變數。

package com.heima.inner;

/** * 區域性內部類

* * @author zp

* */

class outer3

} new inner().funtion(); }}

public class innerclassdemo3

}

匿名內部類:

1.匿名內部類其實就是內部類簡寫格式。

2.定義匿名內部類的前提:

內部類必須繼承乙個類或者實現乙個介面。

3.匿名內部類的格式: new 父類 或者 介面().

4.其實匿名內部類就是乙個匿名子類物件。而且有點胖。可以理解為帶內容的物件,匿名物件對方法只能呼叫一次。

5.匿名內部類中定義的方法最好不要超過3個。

匿名內部類**:

package com.heima.inner;

/** * 匿名內部類

* * @author

* */

abstract class absdemo

class outer4

void abc()

}.show(); }}

public class innerclassdemo4

}

package com.heima.inner;

inte***ce inter

class test

}; }}

public class innerclassdemo5 ;這樣寫是錯的,因為object沒有show();

public void show()

}.show();

}}



java中內部類

下面我列出個程式,能看懂這個程式的錯誤相信對內部類的理解就變得容易多了 class innerclassdemo6 public void method public static void main string args 在這個程式中有兩個錯誤的地方 另外乙個程式,補足程式,用到匿名內部類的知識...

JAVA中的內部類 方法內部類

方法內部類就是內部類定義在外部類的方法中,方法內部類只在該方法的內部可見,即只在該方法內可以使用。由於方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和 static 修飾符。下邊的例子 外部類 public class helloworld 建立方法內部類的物件 min...

Java內部類 Java例項內部類

例項內部類是指沒有用 static 修飾的內部類。示例 如下 public class outer 上述示例中的 inner 類就是例項內部類。例項內部類有如下特點。1 在外部類的靜態方法和外部類以外的其他類中,必須通過外部類的例項建立內部類的例項。public class outer inner1...