外部类与内部类【成员内部类】

1、类

package com.wyq.study;
	/**
	 * 将一个类定义在另一个类的内部称为内部类
	 * @author administrator
	 *
	 */
public class Outer {	//外部类
	public static String name = "张三";
	//成员内部类
	protected class Inner{	//访问权限可以是private,public,default,protected
		//内部类的属性
		public String name = "李四";
		//内部类的方法
		public void fun(){
			System.out.println("name="+name);
			System.out.println("this.name="+this.name);
			System.out.println(Outer.Inner.this);
			System.out.println(Outer.this);
			System.out.println(Outer.name);
		}		
	}
	public void fun(){
		System.out.println("外部类的方法:Outer.name="+Outer.name);
		System.out.println("外部:name="+name);
		System.out.println("外部:this.name="+this.name);		
	}
}

2、调用方式

package com.wyq.study;

//内部类导包的方式:包名.外部类名.内部类名
import com.wyq.study.Outer.Inner;

public class TestPOuter {
	public static void main(String[] args) {
		Outer ou = new Outer();	//创建外部类的对象
		//内部类创建对象的方式
		Inner in = ou.new Inner();	//创建内部类的对象
		//使用外部类访问的属性和方法是外部类的
		System.out.println("ou.name="+ou.name);
		ou.fun();
		//使用内部类访问的属性和方法是内部类的
		System.out.println("in.name="+in.name);
		in.fun();
		//第二种创建爱内部类的方式
		new Outer().new Inner().fun();
		System.out.println("new Outer().name="+new Outer().name);
		System.out.println("new Outer().new Inner().name="+new Outer().new Inner().name);
	}
}

3、输出结果

ou.name=张三
外部类的方法:Outer.name=张三
外部:name=张三
外部:this.name=张三
in.name=李四
name=李四
this.name=李四
com.wyq.study.Outer$Inner@32728d
com.wyq.study.Outer@6ffe8714
张三
name=李四
this.name=李四
com.wyq.study.Outer$Inner@2f566b7d
com.wyq.study.Outer@52aaf3d2
张三
new Outer().name=张三
new Outer().new Inner().name=李四

猜你喜欢

转载自blog.csdn.net/wyqwilliam/article/details/92067383