匿名内部类和内部类

内部类: 在  java 中 ,除了在类中定义属性和方法之外,还可以在再定义类。定义在一个类内部的类被称为内部类;

内部类的特点:

  1. 内部类能访问其所处类的私有属性和方法;
  2. 内部类能够隐藏起来,不被同一个包中的其他类访问。如果一个类只对某个类来使用,那么他就可以将其定义为内部类;
  3. 匿名内部类可以方便的用于在回调方法中,典型应用是事件处理;
  4. 内部类可以声明为抽象类,因此可以被其他的内部类继承,也可以声明为final
  5. 内部类和外部类不同,内部类可以声明为private,或是protected ,外部类只能用public dafault
  6. 内部类可以声明为static 的,但此时就不能使用外层封装类的非static 的成员变量
  7. 如不是static 内部类,内部类的成员不能声明为static的,顶层类的成员或是 static的内部类才可以声明为static的成员变量;

注意“:  除了 可以在定义在类中与方法并列之外,还可以定义在方法的内部或者是自由块中,此时的被称为,局部内部类,只能在方法体中或是自由块中使用;


class Outid {
abstract class Inner {
public void inner() {
System.out.println("内部类方法");
}


public abstract void show();


}


class B extends Inner {


@Override
public void show() {


System.out.println("我是抽象内部类的子类");
}
}
// public void out(){
// new Inner().inner();
// }


}


public class InnerClassDemo {
public static void main(String[] args) {
// new Outid().out();


new Outid().new B().show();
}
}

匿名内部类:
内部类可以在类中或是方法中定义,匿名内部类是指在定义时没有名称的内部类。一般用于方法中,如果某个类只使用一次,此时可以采用匿名内部类的方法定义。匿名内部类定义。比如按钮只使用一次。

因为匿名内部类没有名字,因此需要在定义是同时使用,这就是在定义时使用new关键字作为开始的原因,new关键字的后面跟的是匿名内部类需要的继承父类名或是实现的接口名。在匿名类的主体中一般需要重写父类中的某些方法或者实现接口中的所有方法;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值