• Java成员内部类、局部内部类、匿名内部类


    1、成员内部类,在已有的类的内部声明类,也成为嵌套类,如果使用了static就变成顶级类,否则就是成员的作用域一样,内部类不能有静态成员,内部类可以使用外部的成员

    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、局部内类,在方法中声明内部类

    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 父类名/接口名(){

    }

    注意:匿名内部类不能有构造函数,也不能包含静态成员

    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();
      }
  • 相关阅读:
    YOLOv8优化策略:全新的聚焦式线性注意力模块Focused Linear Attention | ICCV2023
    Docker 镜像导出和导入
    机器人运动学、动力学与控制及Matlab实现
    3.0、软件测试——测试用例
    qt的qtableview锁定第一列(或者其他列)
    摸鱼也摸鱼之在线数独自动求解
    费曼学习法(Redis总结)
    6到飞起,阿里高工强推JDK源码笔记,Github已星标80k程序员小毫
    MySQL配置
    Redis 之 SessionCallback & RedisCallback 使用
  • 原文地址:https://blog.csdn.net/m0_54828003/article/details/126233226