内部类与匿名类

内部类顾名思义就是一个类内的类。是为了方便而被创建的,内部类可以调用外部类的方法属性,而外部类想要调用内部类需要先实例化对象然后通过对象进行调用。
内部类分两种1.成员内部类2.局部内部类

匿名类也是为了方便而产生的在安卓开发中很常见,先看一个例子:

class A{}
public class TestDemo {
     public static void function(A a){
         System.out.println("输入类为:"+a.getClass().getName());
     }
   public static void main(String[] args) {
        function(new A());      //输入类为:A
        function(new A(){});    //输入类为:TestDemo$1
        function(new A(){{}});  //输入类为:TestDemo$2
        function(new A(){{}});  //输入类为:TestDemo$3
        function(new A(){{}{}});//输入类为:TestDemo$4
    }
}

很显然根据输出我们知道这些类并不是同一个类,新产生的类都是A类的子类。以function(new A(){{}});为例意思为

function(new A(){
{
/*函数静态块*/
}
/*匿名类的一些方法*/
});

知道了这些下来就该了解怎么用了~
一般来说内部类是对抽象类的继承,而且重写了抽象类的一些方法。
class A{
public abstract doSomeThing();
}
function(new A(){
@override
public abstract doSomeThing(){
//do something …
}
});

猜你喜欢

转载自blog.csdn.net/qq_43313769/article/details/84136135