匿名内部类有两种实现方式。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);
}
}
网友评论