您的位置:首页 > 编程语言 > Java开发

Java 内部类

2016-01-19 20:47 309 查看
package day10;

/*

* 内部类:将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类、嵌套类)。

* 访问特点:

* 1、内部类可以直接访问外部类中的成员,包括私有成员。

* 2、外部类要访问内部类中的成员必须要建立内部类的对象。

*

*

* 一般用于类的设计:

* 分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容。这时就是还有的事物定义成内部类来描述。

*/

class Outer{

private static int num = 3;

static class Inner{//内部类

//int num = 10;

void show(){

System.out.print("show run " + num);

}

static void function(){//如果内部类定义了静态成员,该内部类也必须是静态的。

System.out.println("function run" + num);

}

}

public void method(){

Inner in = new Inner();

in.show();

}

}

class outer2{

class Inner{

}

}

public class InnerClassDemo {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

//直接访问外部类中的内部类中的成员。

/* Outer.Inner in = new Outer().new Inner();

in.show();*/

//如果内部类是静态的,相当于一个外部类。

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

in.show();

}

}

package day10;

/*

* 为什么内部类能直接访问外部类中成员呢?

* 那是因为内部类持有了外部类的引用。外部类名.this

*

*

*/

class Outer{

int num = 3;

class Inner{

int num = 4;

void show(){

int num = 5;

System.out.println(Inner.this.num);

}

}

void method(){

new Inner().show();

}

}

public class InnerClassDemo2 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

new Outer().method();

}

}

package day10;

/*

*内部类可以存放在局部位置上

*内部类在局部位置上只能访问局部中被final修饰的局部变量。

*

*/

class Outer{

int num = 3;

Object method(){

final int x = 9;

class Inner{

void show(){

System.out.println("show..." + x);

}

}

Object in = new Inner();

//in.show();

return in;

}

}

public class InnerClassDemo3 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Outer out = new Outer();

//new Outer().method();

Object obj = out.method();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: