java 局部内部类常用么_Java中的内部类
一、內(nèi)部類概述
在一個類的內(nèi)部定義一個類。在 A 類中定義 類 B。B 類就被叫做 A 的內(nèi)部類。A 類就是 B 的外部類。
二、內(nèi)部類的種類
內(nèi)部類分為:成員內(nèi)部類、靜態(tài)內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類。
1、成員內(nèi)部類
(1)定義
在一個類中定義一個類,這個類相當(dāng)于另一個類的成員。
成員內(nèi)部類中不可以有靜態(tài)成員和靜態(tài)方法。
public class Outer {
private String name;
public void out() {
System.out.println("這是外部類的方法");
}
class Inner {
public void in() {
System.out.println("這是內(nèi)部類的方法");
}
}
}
(2)實例化
實例化成員內(nèi)部類需要先初始化外部類,然后用外部類調(diào)用內(nèi)部類,最后用外部類的實例實例化內(nèi)部類。
// 1. 實例化外部類
Outer outObj = new Outer();
// 2. 用外部類調(diào)用內(nèi)部類,用外部類的實例實例化內(nèi)部類
Outer.Inner inner = outObj.new Inner();
// 3. 測試:調(diào)用內(nèi)部類的方法
inner.in();
(3)成員內(nèi)部類可以干什么
訪問外部類的所有屬性和方法。
public class Outer {
private String name;
public void out() {
System.out.println("這是外部類的方法");
}
class Inner {
public void in() {
System.out.println("這是內(nèi)部類的方法");
// 訪問外部類屬性
System.out.println(name);
// 訪問外部類方法
out();
}
}
}
2、靜態(tài)內(nèi)部類
(1)定義
使用 static 修飾的內(nèi)部類就是靜態(tài)內(nèi)部類。
(2)實例化
如何實例化靜態(tài)內(nèi)部類:使用外部類調(diào)用靜態(tài)內(nèi)部類就可以實例化靜態(tài)內(nèi)部類。
public static void main(String[] args) {
// 創(chuàng)建靜態(tài)內(nèi)部類對象
Outer.Inner inner = new Outer.Inner();
inner.in();
}
(3)靜態(tài)內(nèi)部類可以干什么
靜態(tài)內(nèi)部類不可以使用外部類非靜態(tài)的成員和非靜態(tài)的方法。
靜態(tài)內(nèi)部類中可以聲明靜態(tài)成員和方法。
3、局部內(nèi)部類
(1)定義
在一個方法中聲明一個類,就是局部內(nèi)部類。
public class Outer1 {
private String name;
public void out() {
System.out.println("這是外部類");
}
public void method1() {
// 局部內(nèi)部類
class Inner {
public void in() {
System.out.println("這是局部內(nèi)部類");
// 局部內(nèi)部類可以訪問外部類的屬性和方法
System.out.println(name);
out();
}
}
}
}
(2)實例化
局部內(nèi)部類不能用外部類調(diào)用實例化,只能在局部內(nèi)部類定義的方法中實例化。
public class Outer1 {
private String name;
public void out() {
System.out.println("這是外部類");
}
public void method1() {
// 局部內(nèi)部類
class Inner {
public void in() {
System.out.println("這是局部內(nèi)部類");
}
}
// 實例化局部內(nèi)部類
Inner in = new Inner();
in.in();
}
}
4、匿名內(nèi)部類
(1)定義
匿名內(nèi)部類是最常用的內(nèi)部類。
匿名內(nèi)部類主要依賴于其他類和接口來實現(xiàn)。
依賴類:這個匿名內(nèi)部類默認是該類的子類。
依賴接口:這個匿名內(nèi)部類默認是該接口的實現(xiàn)。
(2)使用匿名內(nèi)部類
接口 Work
public interface Work {
void doWork();
}
用匿名內(nèi)部類實現(xiàn)接口,并調(diào)用方法:
public static void main(String[] args) {
// 創(chuàng)建一個匿名內(nèi)部類
new Work() {
@Override
public void doWork() {
System.out.println("doWork");
}
}.doWork();
}
不使用匿名內(nèi)部類,實現(xiàn)接口,并調(diào)用方法:
實現(xiàn)接口:
public class WorkImpl implements Work {
@Override
public void doWork() {
System.out.println("doWork");
}
}
調(diào)用方法:
public static void main(String[] args) {
new WorkImpl().doWork();
}
總結(jié)
以上是生活随笔為你收集整理的java 局部内部类常用么_Java中的内部类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浙大计算机学院吴飞,浙江大学吴飞教授来我
- 下一篇: [云炬创业基础笔记]第七张创业团队测试6