N种内部类

概念

内部类就是在一个类的内部再定义一个类。比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。

  1. 成员内部类

  2. 静态内部类

  3. 局部内部类

  4. 匿名内部类

  5. lambda

注意

一个java类中可以有多个class类,但是只能有一个public class

 

快捷键

输入outer.new Inner(),加alt+enter

 

可实例化成员内部类

 

代码

成员内部类

//Java-零基础学习/src/oop/demo10/Outer
package oop.demo10;

public class Outer {

   private int id = 10;

   public void out() {
       System.out.println("这是外部类的方法");
  }

   public class Inner {
       public void in() {
           System.out.println("这是内部类的方法");
      }

       //获得外部类的私有属性
       public void getID() {
           System.out.println(id);
      }
  }
}
//Java-零基础学习/src/oop/Application
package oop;

import oop.demo10.Outer;

//一个项目应该只存在一个main方法
public class Application {

   public static void main(String[] args) {
       Outer outer = new Outer();
       //通过这个外部类来实例化内部类
       Outer.Inner inner = outer.new Inner();
       inner.in();
       inner.getID();
  }
}

静态内部类

//Java-零基础学习/src/oop/demo10/Outer
package oop.demo10;

public class Outer {

   private int id = 10;

   public void out() {
       System.out.println("这是外部类的方法");
  }

   public static class Inner {
       public void in() {
           System.out.println("这是内部类的方法");
      }
  }
}
//Java-零基础学习/src/oop/Application
package oop;

import oop.demo10.Outer;

//一个项目应该只存在一个main方法
public class Application {

   public static void main(String[] args) {
       Outer outer = new Outer();
  }
}

局部内部类

//Java-零基础学习/src/oop/demo10/Outer
package oop.demo10;

public class Outer {

   //局部内部类
   public void method() {

       class Inner {
           public void in() {
               
          }
      }
  }
}

匿名内部类

//Java-零基础学习/src/oop/demo10/Test
package oop.demo10;

public class Test {
   public static void main(String[] args) {
       //没有名字初始化类,不用将实例保存在变量中
       new Apple().eat();

       //省略 UserService userService = new UserService()
       new UserService() {

           @Override
           public void hello() {

          }
      };
  }
}

class Apple {
   public void eat() {
       System.out.println("1");
  }
}

interface UserService {
   void hello();
}
 

 

posted @   poiuyjoey  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示