內部類別

內部類別包含:

1.一般內部類別(regular inner class)

一個外部類別可以有很多內部類別,例如:

class out{

class in1{

}

class in2{

}

.

.

.

}

2.方法類別(method class)

方法內部類別其實就是在方法中宣告一個類別,例如:

public class innerclass{

public static void main(String[] args){

new innerclass().lool();

}

void lool(){

final int x=10;

int xx=20;

class in1{

System.out,println("nornal="+ xx)         //會失敗

System.out,println("final="+ x)

}

}

.

}

特別注意,方法內部類別不可存取方法內非final的區域變數。

3.匿名類別(anonymous class)

匿名類別常用於在程式中只會使用一次的地方。

直接用{...}實作程式碼,例如:

public class innerclass{

public static void main(String[] args){

{

public void foo(){

System.out,println("")  

}

}

}

}

4.靜態內部類別(static inner class)

靜態內部類別在宣告時,加了static。被配置在記憶體Global中,而不是Heap內。

class outer{

private int d=4;

static private int a = 1;

static class InnerStatic{

private int b=2;

static private int c =3;

public void fooA(){ //fooA可存取InnerStatic的static成員與instance(non-static)與outer的static成員,但不能存取outer的instance(non-static)

System.out.println(a);

System.out.println(b);

System.out.println(c);

}

public static void fooB(){ //僅可存取outer與InnerStatic所定義的static成員。

System.out.println(c);

System.out.println(a);

}

}

}

public class StaticClass{

public static void main(String[] args ){

outer.InnerStatic x= new Outer.InnerStatic();

x.fooB;

x.fooA;

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值