什么是匿名内部类

2024-06-26  本文已影响0人  屎倒淋头还嚼便

匿名内部类有两种实现方式。1实现接口  2继承一个抽象类/普通类

大概就是在方法或代码块中new 一个接口/抽象类/普通类,重写其中的方法。这就是匿名内部类。

相当于新建了一个类,只不过没有类名,然后直接new了这个匿名类的对象,应该就是建了一个子类

package com.example.demo;

public class User {
    private int userId;
    private String name;
    private int age;
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}

package com.example.demo;

public class T {
    static String s1 = new String("f");
    
    static Runnable runnable = new Runnable() {
        
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("runnable");
        }
    };
    
    static{
        System.out.println("静态代码块"); // 类加载时执行,并且只会执行一次
    }
    
    {
        System.out.println("构造代码块"); // new构造方法执行完毕后执行
    }
    public static void main(String[] args) {
        System.out.println("main");
        new T();
        new Thread(runnable).start();
        
        User user = new User() {
            @Override
            public String getName() {
                System.out.println("匿名内部类");
                System.out.println(T.this.s1);
                return "匿名内部类getName方法的返回";
            }
        };
        String name = user.getName(); // 不调用匿名内部类的方法的话,方法不会运行。
        System.out.println(name);
        
    }
}
上一篇 下一篇

猜你喜欢

热点阅读