(34)内部类

内部类[不常用]

一、

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

二、内部类的访问规则(互访方式)

①内部类可以直接访问外部类中的成员,包括私有

之所以可以直接访问外部类的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this

②外部类要访问内部类,必须建立内部类对象

对这个访问规则简单解释:

若孙悟空就在牛魔王的肚子里,孙悟空要访问心脏,则可直接去,直接访问(内部类直接访问外部成员)

若牛魔王要访问孙悟空的心脏,要先建立孙悟空对象,再得到孙悟空的心脏。(外部类访问内部类)

三、举个栗子:



public class Outer {
   
	int x=3;
	class Inner{
	 int x=4;
		void function() {
			int x=6;
			System.out.println("inner:"+x);//6
			System.out.println("inner:"+this.x);//4
			System.out.println("inner:"+Outer.this.x);//3
		}
	}
	public void method() {
		Inner in=new Inner();
		in.function();
	}
}
public class Demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * 间接访问内部类成员
		 */
           Outer ot=new Outer();
           ot.method();
           /*
            * 直接访问内部类成员
            */
           Outer.Inner in=new Outer().new Inner();
	}







四、访问方式

当内部类定义在外部类的成员位置上时,而且非私有,可以在外部其他类中,可以直接建立内部类对象。

格式:外部类.内部类 变量名=new外部类名().内部类名()

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

②当内部类在成员位置上,就可以被成员修饰符所修饰

比如,private:将内部类在外部类中进行封装。

Static:内部类就具备static的特性

当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限。

在外部其他类中创建


五、什么时候用内部类

当描述事物时,事物的内部还有事物,该事物用内部类描述。

因为内部事务在使用外部事物的内容
posted @ 2017-07-09 21:19  测试开发分享站  阅读(104)  评论(0)    收藏  举报