package syntax;
import syntax.OUTER.Innn;
public class INNER {
public static void main(String args[])
{
//Innn in = new OUTER.Innn();
OUTER s = new OUTER();
s.produce();
}
}
interface Car{
void run();
}
class OUTER{
private String a="outer a" ;
private static String b="outer b";
class Inner{
private String a ="inner a";
//private static String b = "inner b";//不能声明为静态,因为内部类不是静态的
public void get1()
{
System.out.println(a);//访问自己的变量
}
public void get2()
{
System.out.println(this.a);//也是访问自己的变量
}
public void get3()
{
System.out.println(OUTER.b);//访问外部静态
}
public void get4()
{
System.out.println(OUTER.this.a);//访问外部类变量
}
public void show()
{
System.out.println("I'm Inner show");
}
/*
* 如果内部类与外部有重名的变量 a
* a | this.a 都是默认取内部里面的变量
* Outer.b 用于取外部静态变量
* Outer.this.a 用于访问外部与内部类重名的属性
* */
}
public void showOuter()// 外部类访问内部类
{
Inner inner = new Inner();
inner.show();
}
public static void staticShowOuter()// 通过静态方法访问内部类
{
Inner in = new OUTER().new Inner();
in.show();
}
public void showInner()
{
Inner inner = new Inner();
inner.get1();
inner.get2();
inner.get3();
inner.get4();
}
//-----++++++++++++++++++++-0-----
//下面是方法内部类
public void innerFun()
{
final String c = "i in fun";
class Inner2
{
String i = "i in fun'inner";
public void show()
{
System.out.println(a);//可以直接访问外部类的变量(不与内部重名)
System.out.println(OUTER.this.a);
System.out.println(c);
}
}
Inner2 in2 = new Inner2();
in2.show();//在方法里定义一个对象然后调用这个类里面的方法
}
// 下面是静态内部类--------+++++++++++
public static class Innn
{
public String s = "innn s";
public static String gg = "innn static gg";
public void show1(){
System.out.println("it is show1");
}
public static void show2()
{
System.out.println("it is show2");
}
}
/*
* 内部类,一定要实现一个接口或父类,并且只能重写里面的方法
* */
public void produce()
{
Car car = new Car() {
public void run() {
System.out.println("I'm run");
}
};
car.run();
}
}
转载:
http://blog.sina.com.cn/s/blog_56898c310100a3i3.html
内部类
最新推荐文章于 2024-04-25 12:25:03 发布