1) 匿名对象 匿名:没有名字
new Demo2().test();// 匿名对象
2) 匿名内部类
// 这是一个普通的类
public class Demo2 {
void test(){
System.out.println("hahahaha");
}
public static void main(String[] args) {
Demo2 d = new Demo2(){ // 这是一个匿名内部类
void test2(){ // 局部函数,无法再外界引用,当前内部类引用
System.out.println("我自己的方法");
}
@Override
void test(){
test2();
System.out.println("重写的方法");
}
}; //相当于继承了 Demo2 这个类
d.test();
}
}
// 这是一个接口
public interface Demo3 {
void test1();
void test2();
}
class Demo4 {
public static void main(String[] args) {
Demo3 d3 = new Demo3(){
@Override
public void test1() {
System.out.println("a");
}
@Override
public void test2() {
System.out.println("b");
}
void test3(){
System.out.println("c");
}
};
d3.test1();
d4.test2();
}
}
new Demo2().test();// 匿名对象
2) 匿名内部类
// 这是一个普通的类
public class Demo2 {
void test(){
System.out.println("hahahaha");
}
public static void main(String[] args) {
Demo2 d = new Demo2(){ // 这是一个匿名内部类
void test2(){ // 局部函数,无法再外界引用,当前内部类引用
System.out.println("我自己的方法");
}
@Override
void test(){
test2();
System.out.println("重写的方法");
}
}; //相当于继承了 Demo2 这个类
d.test();
}
}
// 这是一个接口
public interface Demo3 {
void test1();
void test2();
}
class Demo4 {
public static void main(String[] args) {
Demo3 d3 = new Demo3(){
@Override
public void test1() {
System.out.println("a");
}
@Override
public void test2() {
System.out.println("b");
}
void test3(){
System.out.println("c");
}
};
d3.test1();
d4.test2();
}
}