越南网站怎么做,网站做留言板,在商用网站上用明星的名字做昵称,黄骅市网站建设公司【README】
1#xff0c;本文总结了java4种内部类#xff0c;包括
成员内部类#xff1a;在外部类内部定义的非静态类#xff1b;成员内部类不能独立存在#xff0c;如 UML中类间的组合关联关系#xff1b;静态内部类#xff1a;在外部类内部定义的静态类#xff1b;…【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 两个指针
外部类对象.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();}
}