/**
* 匿名内部类:没有类名字的内部类(【注意和匿名对象区分】<没有引用指向对象>, 比如:new Stu())
*
* 特点:
* 1:首先得是个局部内部类(其实是特点2决定了,它是局部内部类。为什么?因为创建对(匿名内部类是类的声明以及对象的创建结合一体的写法)象需要执行代码,需要放在方法体中)
* 2:结合类的声明以及实例化为一体。
*3:由于他没有名字,所以需要指定一下它的父类名字,以表明它是哪个类的子类(换句话说,是建立在继承关系上的)
*/
public class NonameInnerClass {
public static void main(String[] args) {
/* //其实匿名内部类就是这个过程的简写
Stu s= new Stu();
new Person(){//既然匿名内部类没有类名,那么还是得要用父类类名(或者是接口名)进行表示一下
void show() {//如果比较,重写(覆盖)或实现某些必要的方法
// TODO 待续...
System.out.println("匿名内部类的show()");
}
void self(){//可以添加自己特有的方法
System.out.println("匿名内部类特有的 方法");
}
///我们在匿名内部类中的方法一般不超过三个,方法过多了可读性极差
}.self();
}
}
class Stu extends Person{
void show() {
// TODO 待续...
System.out.println("show()....");
}
}
abstract class Person{//这个类不一定非要是抽象类,或者是接口,一般的类也行
abstract void show();
}
* 匿名内部类:没有类名字的内部类(【注意和匿名对象区分】<没有引用指向对象>, 比如:new Stu())
*
* 特点:
* 1:首先得是个局部内部类(其实是特点2决定了,它是局部内部类。为什么?因为创建对(匿名内部类是类的声明以及对象的创建结合一体的写法)象需要执行代码,需要放在方法体中)
* 2:结合类的声明以及实例化为一体。
*3:由于他没有名字,所以需要指定一下它的父类名字,以表明它是哪个类的子类(换句话说,是建立在继承关系上的)
*/
public class NonameInnerClass {
public static void main(String[] args) {
/* //其实匿名内部类就是这个过程的简写
Stu s= new Stu();
s.show();
*/
new Person(){//既然匿名内部类没有类名,那么还是得要用父类类名(或者是接口名)进行表示一下
void show() {//如果比较,重写(覆盖)或实现某些必要的方法
// TODO 待续...
System.out.println("匿名内部类的show()");
}
void self(){//可以添加自己特有的方法
System.out.println("匿名内部类特有的 方法");
}
///我们在匿名内部类中的方法一般不超过三个,方法过多了可读性极差
}.self();
}
}
class Stu extends Person{
void show() {
// TODO 待续...
System.out.println("show()....");
}
}
abstract class Person{//这个类不一定非要是抽象类,或者是接口,一般的类也行
abstract void show();
}