内部类的作用

一、写在类内部的 有名字的类

1.区别于普通类一:写在类里面的类

2可以当做静态成员访问 p.innerClassA=p.getclassA()

3.隐藏内部实现细节,生成高效率代码

二、写在方法内部的类 分为有名的 和匿名的

1.方法内的 内部类

class A{

interface/abstract C  method(){

class B implements interfaceC {};

return new  B()

}

}

注意定义到方法内部,要返回接口或者抽象类,编译即使不调用也编译,作用范围是方法内部

2.方法内某个作用域的内部类

class A{

void  method(boolean a){

if(a){

class B implements interfaceC {};

 }

}

}

3、方法内的匿名类,因为没有名字 所有没有构造器 要遵循原始的默认的

传递参数的

class A{

interfaceC method(string x){

return  new  interfaceC(x) {};

 

}

}

不传递参数 引用外部的变量  要把被引用变量用final来修饰


class A{

interfaceC method(final string x){

return  new  interfaceC( ) {string a=x};

 

}

}

4.链接到外部类

普通内部类可以直接访问外部类的成员 甚至是私有的

三.static内部类(特殊)

  创建静态内部类,不需要创建外部类

 不能从static内部类的一个对象中访问一个外部类对象

  静态内部类不能访问外部的非静态变量

 静态类可以自测

class TestBed {
TestBed() {}
void f() { System.out.println("f()"); }
public static class Tester {
public static void main(String[] args) {
TestBed t = new TestBed();
t.f();
}
}
}

运行java TestBed$Tester命令可以自测

四、创建外部类

public class Parcel11 {
class Contents {
private int i = 11;
public int value() { return i; }
}
class Destination {
private String label;
Destination(String whereTo) {
label = whereTo;
}
String readLabel() { return label; }
}
public static void main(String[] args) {
Parcel11 p = new Parcel11();
 
Parcel11.Contents c = p.new Contents();
Parcel11.Destination d =
p.new Destination("Tanzania");

}
 
}

五。内部类集成,内部类构建器必须同封装类对象的一个句柄联系到一起 具体这里还不是特明白,感觉自己应该去读一读java运行原理运行机之类神马的

class WithInner {
class Inner {}
}
public class InheritInner
extends WithInner.Inner {
//! InheritInner() {} // Won't compile
InheritInner(WithInner wi) {
wi.super();
}

public static void main(String[] args) {
WithInner wi = new WithInner();
InheritInner ii = new InheritInner(wi);
}
}

 

六、继承后内部类执行顺序

     1.一个类继承一个有内部类的类,则构造函数执行方法为:

      执行外部父类构造函数,然后再执行 继承外部类的构造函数

     也就是说内部类不被初始化

    2.如果是A外部类继承B外部类,且A的内部类继承B的外部类B.innerclass,则执行的顺序是,

     执行B内部构造函数,执行B构造函数 ,执行A构造函数


七、内部类编译后的class命名规则

       封装类(外部类)$内部类名$内部类名....class

       如果是匿名类 会生成一串数字

八、内部类的控制框架的作用,一个框架是一个整体,其他类负责完成部分功能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值