内部类.Java学习

今天复习一下Java里面一个比较重要的概念  内部类

 局部内部类

  1. 内部类是定义在一个类的内部。通常是在方法中。
  2. 本质还是一个类,可以访问外部类的所有成员,包含私有的。
  3. 不能使用访问修饰符。但是可以使用final修饰符。
  4. 作用域尽在定义它的方法或者代码块中。
  5. 外部其他类不能访问局部内部类(因为局部内部类的地位就是衣个局部变量)。
  6. 如果外部类和局部类的成员变量重名。遵守就近原则。如果要访问外部类变量。 可以通过 类型.this.成员 去访问。

匿名内部类

  1. 该类没有名字。
  2. 是一个对象。
  3. 定义外部类的局部位置,比如方法中,并且没有类名。(系统底层会分配一个类型)。
  4.  匿名内部类使用一次就没了(生成的对象是可以多次使用)。
  5. 匿名内部类是为了简化开发。

 

复制代码
 1 package anonymous;
 2 
 3 public class InnerClass {
 4     public static void main(String[] args) {
 5         new Test().run();
 6     }
 7 }
 8 
 9 
10 class Test {
11 
12     public void run() {
13         Animal dog = new Animal() {
14             @Override
15             public void Say() {
16                 System.out.println("小狗汪汪");
17                 System.out.println(this.getClass());
18             }
19         };
20         dog.Say();
21     }
22 }
23 
24 
25 interface Animal {
26     void Say();
27 }
复制代码

 


----------
输出结果。

小狗汪汪
class anonymous.Test$1

成员内部类

  1.  定义为的位置是成员位置。
  2. 外部其他类可以调用成员内部类。

 

复制代码
 1 package anonymous;
 2 
 3 public class MemberInnerClass {
 4     public static void main(String[] args) {
 5         Test01 test01 = new Test01();
 6         Test01.InnerClass innerClass = test01.new InnerClass();
 7         innerClass.Run();
 8     }
 9 }
10 
11 class Test01 {
12 
13     class InnerClass {
14         public void Run() {
15             System.out.println("这是成员内部类");
16         }
17     }
18 }
复制代码

 

静态内部类

  1. 静态内部类还是定义在成员位置,但是他有static修饰。
  2. 可以直接访问外部类的所有静态成员,包括私有的。但是不能直接访问非静态的成员。

 

posted @   菜鸟公猿  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示