java内部类小结
【README】
1,本文總結了java4種內部類,包括
- 成員內部類:在外部類內部定義的非靜態類;成員內部類不能獨立存在,如 UML中類間的組合關聯關系;
- 靜態內部類:在外部類內部定義的靜態類;靜態類與外部類關系密切,但可以獨立存在,如UML中類間的聚合關聯關系;
- 局部內部類:在方法內部定義的內部類;其作用域在方法內部;
- 匿名內部類:顧名思義,沒有名字的內部類,通常用于實現接口,沒有自定義構造器;;
2,本文給出了 相關的測試用例;
3,內部類的作用
- 1,內部類有自己的實現,有助于外部類實現多繼承;1個外部類里面定義多個內部類,每個內部類繼承一個父類,就變相實現了多繼承;
- 2,提高代碼內聚程度;
【1】內部類介紹
【1.1】成員內部類
1)成員內部類:在外部類內部定義的非靜態類;成員內部類不能獨立存在;
2)代碼結構
/*** @Description 成員內部類* @author xiao tang* @version 1.0.0* @createTime 2021年11月21日*/ public class Topic78 {private String name;public Topic78(String name) {this.name = name;}// 成員內部類public class MemberInnerClass {private int age;public MemberInnerClass(int age) {this.age = age;}// 在外部類定義內部,使用外部類.this指針 指向對外部類對象的引用public String hello() {return "hello " + Topic78.this.name;}} }3)測試用例
public class MemberInnerClassTest {public static void main(String[] args) {Topic78 topic78 = new Topic78("lisi");// 創建成員內部類// 在外部類定義外部,使用外部類對象.new指針 指向對外部類對象的引用Topic78.MemberInnerClass memberInnerClass = topic78.new MemberInnerClass(18);System.out.println(memberInnerClass.hello()); // hello lisi} }注意: 成員內部類使用到了 外部類對象.new 和 外部類.this 兩個指針;
【1.2】靜態內部類
1)定義:靜態內部類,在外部類內部定義的靜態類;靜態類與外部類關系密切,但可以獨立存在,如UML中的聚合;
2)代碼結構
/*** @Description 靜態內部類* @author xiao tang* @version 1.0.0* @createTime 2021年11月21日*/ public class Topic77 {/*** @description 靜態內部類* @author xiao tang* @date 2021/11/21*/public static class StaticInnerClass {String name;public StaticInnerClass(String name) {this.name = name;}public void sayHello() {System.out.println("hello " + name);}} }3)測試用例:;
/*** @Description TODO* @author xiao tang* @version 1.0.0* @createTime 2021年11月21日*/ public class StaticInnerClassTest {public static void main(String[] args) {Topic77.StaticInnerClass staticInnerClass = new Topic77.StaticInnerClass("zhangsan");staticInnerClass.sayHello(); // hello zhangsan} }【1.3】局部內部類
1)定義:局部內部類, 在方法內部定義的內部類;
- 其作用域:是當前方法塊,以及訪問外部類的所有成員;但無法在當前方法之外定義和使用它;
2)代碼結構
/*** @Description 局部內部類* @author xiao tang* @version 1.0.0* @createTime 2021年11月21日*/ public class LocalInnerClassTest {private String name;public LocalInnerClassTest(String name) {this.name = name;}public void sayHello() {// 在方法內部定義局部內部類// 其作用域:是當前方法塊,以及訪問外部類的所有成員;(無法在當前方法之外定義和使用它)class LocalInnerClass {public String hello() {return "hello " + name;}public String nice2MeetYou() {return "nice to meet you";}}LocalInnerClass localInnerClass = new LocalInnerClass();System.out.println(localInnerClass.hello());System.out.println(localInnerClass.nice2MeetYou());}public static void main(String[] args) {new LocalInnerClassTest("lisi").sayHello();} }3)測試用例:
同上;
hello lisi
nice to meet you
【1.4】 匿名內部類
1)定義:匿名內部類,顧名思義,沒有名字的內部類,通常用于實現接口,沒有自定義構造器;
2)代碼結構: 并發編程實現Runnable接口
/*** @Description 匿名內部類* @author xiao tang* @version 1.0.0* @createTime 2021年11月21日*/ public class AnonymousInnerClassTest {public static void main(String[] args) {// 通過匿名內部類實現 Runnable接口,簡化代碼Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("hello world");}};runnable.run();} }總結
- 上一篇: 吃鸡游戏电脑配置显卡要求(吃鸡游戏电脑配
- 下一篇: 用电脑显示器做频谱图(频谱显示电路图)