匿名类

在撰写Java程序时,经常会有临时继承某个类或操作某个接口并建立实例的需求。由于这类子类或接口操作类只使用一次,不需要为这些类定义名称,这时可以使用匿名内部类(Anonymous Inner Class)来解决这个需求。匿名内部类的语法为:

new 父类() | 接口(){
//类本体操作
}

以继承Object重新定义toString()方法为例:

Object o = new Object(){
@override
public String toString(){
return "just for testing."
}
}

如果是操作某个接口,例如若Some接口定义了doService()方法,要建立匿名类实例,可以如下:

Some some = new Some(){
public void doService(){
System.out.println("do something.");
}
}

匿名类的使用主要是用在继承的子类或实现的接口只使用一次的情况,因此我们没有必要为了使用该子类而去重新定义一个完整的类。比如我们在程序中要使用Some类作为父类,但是其子类只使用一次,完整定义一个子类如下:

public class Other extends Some{
…………
}

然后再利用新生成的子类去新建一个对象

Other other = new Other();

新建完对象后就再也不会用到Other类了,因此我们使用匿名类来简化这一过程,将新建类和新建对象合在一起操作。同时,因为我们新建的类没有名称,所以在新建对象时是用父类的名称,如下:

Some some = new Some(){
…………
}

我们要对Other子类新增的功能或者对父类Some重新定义的行为就直接在新建对象的时候完成。

内部类就是指一个类定义在另一个类的内部,从而成为外部类的一个成员。因此一个类中可以有成员变量、方法,还可以有内部类。实际上Java的内部类可以被称为成员类,内部类实际上是它所在类的成员。所以内部类也就具有和成员变量、成员方法相同的性质。比如,成员方法可以访问私有变量,那么成员类也可以访问私有变量了。也就是说,成员类中的成员方法都可以访问成员类所在类的私有变量。内部类最重要的特点就是能够访问外部类的所有成员。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值