关于内嵌类

内嵌类是指嵌套在一个类中的类,又有别称嵌套类(NestedClass)或内部类(InnerClass),分为三种形式:成员类、方法内嵌类、匿名内嵌类。下面一一介绍:

一、成员类

内嵌类中最普通的一种,将其简单看作外部类的一个成员,大部分问题都能理解,另有以下几点需注意:

1、对外部类同名变量的隐藏,成员类中的this指向当前的成员类,而非外部类,成员类中访问外部类的当前对象用:外部类名.this 实现访问。

2、成员类的类名不能与外部类的类名相同,但可以与包中其它类或其它包中类相同,因为成员类实际名字是:外部类名$成员类名.java 

3、静态方法(尤其main方法)中不能直接创建成员类的的对象,必须先创建外部类的对象,再创建成员类的对象。eg: OuterOne.InnerOne x=new OuterOne().newInnerOne();

二、方法内嵌类

方法内嵌类也无甚特殊,只是将类的声明和定义放到方法中,需要注意的一点是因为方法内嵌类与方法本身定义的一些局部变量没有直接的逻辑上的联系,故规定:方法内嵌类只能访问方法本身定义的常量!当然外部类的成员依然是可以访问的。

三、匿名内嵌类

理解起来就是Java允许创建对象的同时定义类的实现,但不必给出实现类的类名和对象名。eg:

interface Sample{//定义一个待实现的接口。

void testMethod();

}

public class AnonymousInner{

piblic void outMethod(){

//也可以命名一个对象,之后再调用testMethod方法。eg:Sample s=new Sample{....};s.testMethod();

new Sample{

//注意不能少了这个public,原接口可以默认但实现时不能少。

public void testMethod(){

System.out.println("just for test.");

}

}.testMethod();

}

public static void main(String args[]){

Anonymous test=new Anonymous();

test.outMethod();

}

}

需要注意的是匿名内嵌类产生的字节码文件命名是以编号的方式,如上例中匿名内嵌类的字节码文件则为:AnonymousInner$1.class

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值