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=李四