Java高级进阶第一章、Java成员内部类、局部内部类、匿名内部类
1、成员内部类,在已有的类的内部声明类,也成为嵌套类,如果使用了static就变成顶级类,否则就是成员的作用域一样,内部类不能有静态成员,内部类可以使用外部的成员
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class Person1 { public int Age; class Say{ public void SayHello(){ System. out .println( "你的年龄" +Age); } } } class TestPerson1{ @Test public void T(){ //引用时需要指定完整类名 Person1.Say s = new Person1(). new Say(); s.SayHello(); } } |
2、局部内类,在方法中声明内部类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Person { public int Age; //方法中增加 public void Say() { String Name = "李四" ; class innerClass { public void hello() { System. out .println(Name + "你好" ); } } innerClass inn = new innerClass(); inn.hello(); System. out .println( "调用内部类" ); } } |
3、匿名内部类
匿名类是一个没有类名的特殊内部类,也叫做匿名内部类,匿名内部类适合创建只需要使用一次的类,创建匿名内部类时需要集成一个已有的父类或者是实现一个接口,由于匿名内部类本身没有类名,因此不存在构造函数。
匿名内部类,本身没有名字,使用new语句一部分来声明,格式如下:
new 父类名/接口名(){
}
注意:匿名内部类不能有构造函数,也不能包含静态成员
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Test44 { @Test public void testPerson(){ // Person person = new Person(); // person.Say(); //通过接口创建匿名内部类,使用多态完成 MyInterFace myInterFace = new MyInterFace() { @Override public void SayHello() { System.out.println( "创建匿名内部类" ); } }; //调用匿名内部类的方法 myInterFace.SayHello(); } } /*** * 定义接口实现匿名内部类 */ interface MyInterFace{ void SayHello(); } |
分类:
Java高级编程
posted on 2022-07-31 23:21 topguntopgun 阅读(32) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人