匿名内部类的使用
首先先搞定什么事匿名内部类
顾名思义,匿名内部类就是省去命名的类
上代码
public static void main(String[] args)
{
new fulei()
{
void test2()
{
System.out.println("内部类2");
}
}.test2();//此处是test1的话结果是内部类1,是test2的话结果是内部类2
}
class fulei
{
void test1()
{
System.out.println("内部类1");
}
}
省去了类的命名
但是在工作中如何使用
上代码
/*
* 匿名内部类的使用方法:当需要对父类的方法进行复写时所用的,特点是内部类的方法尽可能少,一般就是只有一个
* 弊端:如果想多次调用的话就得重复的写匿名内部类。
* 格式:new 父类(){方法体}.方法名字
* 作用:简单容易写,不用再给子类起名字了,所谓匿名,就是匿名创建了一个子类对象。
*/
public class Neibulei {
public static void main(String[] args)
{
PersonDemo pd = new PersonDemo ();
pd.method(new Student(){
public void show() {
System.out.println("show-1");
}
});
pd.method(new Person() {//匿名内部类在开发中当做参数传递
public void show() {
System.out.println("show");
}
});
}
}
class fulei
{
void test1()
{
System.out.println("内部类1");
}
}
abstract class Person {
public abstract void show();
}
class PersonDemo {
public void method(Person p) {//Person p = new Student(); //父类引用指向子类对象
p.show();
}
}
class Student extends Person {
public void show() {
System.out.println("students show");
}
}
理解容易,但是在工作中使用,还要分析具体情况,但是匿名内部类的使用会让代码显得冗余,可以使用java8新特性lamda表达式来写。但是会造成代码晦涩难懂 且不规范。