java中关于内部类的使用详解
java中关于内部类的使用详解
发布时间:2016-12-28 来源:查字典编辑
摘要:内部类访问规则•内部类可以直接访问外部类中的成员,包括私有。访问格式:外部类名.this•外部类要访问内部类必须创建...

内部类访问规则

•内部类可以直接访问外部类中的成员,包括私有。访问格式:外部类名.this

•外部类要访问内部类必须创建内部类对象。

•内部类在成员位置上,可以被成员修饰符修饰。

复制代码 代码如下:

public class InnerClassDemo1 {

public static void main(String[] args){

Outer ou =new Outer();

ou.method();// 4 3

Outer.Inner oi =new Outer().new Inner();

oi.function2();

}

}

class Outer{

private int x=3;

class Inner{

int x=4;

void function1(){

System.out.println(x);

System.out.println(Outer.this.x);

}

void function2(){

Outer.this.method();

}

}

public void method(){

Inner in =new Inner();

in.function1();

}

}

静态内部类

•内部类定义了静态成员,内部类必须是静态的。

复制代码 代码如下:

/*

注意:内部类定义了静态成员,内部类必须是静态的。

*/

class InnerClassDemo2

{

public static void main(String[] args)

{

new Outer.Inner().function();//创建静态内部类对象

}

}

class Outer

{

private static int x=5;

static class Inner//静态内部类 只能访问外部类的静态成员

{

void function()

{

System.out.println("inner:"+x);

}

}

}

局部内部类

•内部类定义在局部时,可以直接访问外部类中的成员。

•访问局部变量必须被final修饰。

复制代码 代码如下:

/*

内部类定义在局部时:可以直接访问外部类中的成员,因为还持有外类中的引用。

但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量

*/

class InnerClassDemo3

{

public static void main(String[] args)

{

Outer out =new Outer();

out.method(7);

}

}

class Outer

{

int x=3;

public void method(final int a)

{

class Inner

{

void function()

{

System.out.println(a);

}

}

new Inner().function();

}

}

匿名内部类

•匿名内部类是内部类的简写格式。

•匿名内部类的前提:内部类必须继承一个类或者实现接口。

•匿名内部类不能创建构造函数。

复制代码 代码如下:

/*

匿名内部类

1.匿名内部类其实就是内部类的简写格式

2.定义匿名内部列的前提。

内部类必须是继承一个类或者实现接口

3.匿名内部类的格式:new 父类或者接口(){定义子类内容}

*/

class InnerClassDemo4

{

public static void main(String[] args)

{

Demo d=new Demo()

{

void show()

{

System.out.println("匿名内部类show方法");

}

void method()

{

System.out.println("匿名内部类method方法");

}

}.show();

d.method();

}

}

abstract class Demo

{

abstract void show();

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类