内部类与匿名类

内部类顾名思义就是一个类内的类。是为了方便而被创建的,内部类可以调用外部类的方法属性,而外部类想要调用内部类需要先实例化对象然后通过对象进行调用。
内部类分两种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 …
}
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
局部内部类和匿名内部类是Java中的两种特殊类型的内部类。 局部内部类是定义在方法或者代码块内部的类。它的作用域被限定在所属的方法或代码块内部,不能在外部访问。局部内部类可以访问所属方法或代码块的局部变量,但是这些变量必须声明为final或者事实上的final(在Java 8之后,可以省略final关键字,但是不能对这些变量进行修改)。局部内部类的定义形式如下: ```java public class OuterClass { public void someMethod() { final int localVar = 10; class LocalInnerClass { public void innerMethod() { System.out.println(localVar); } } LocalInnerClass inner = new LocalInnerClass(); inner.innerMethod(); } } ``` 匿名内部类是没有名字的内部类,它直接继承了一个父类或者实现了一个接口。通常用于创建只使用一次的简单类。匿名内部类没有构造方法,因此可以直接通过实例化后的对象进行方法调用。匿名内部类的定义形式如下: ```java public class OuterClass { public void someMethod() { Thread thread = new Thread(new Runnable() { public void run() { System.out.println("Thread is running"); } }); thread.start(); } } ``` 在上述代码中,我们使用匿名内部类实现了Runnable接口,并在Thread类的构造方法中传入了该匿名内部类的实例。 总结一下,局部内部类是定义在方法或代码块内部的类,它的作用域被限定在所属的方法或代码块内部;而匿名内部类是没有名字的内部类,通常用于创建只使用一次的简单类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值