内部类
访问特点:
1、内部类可以直接访问外部类中的成员,包括私有成员。
2、而外部类要访问内部类中的成员必须要建立内部类的对象。
内部类的位置:内部类定义在成员位置上,所以:
1、可以被private static成员修饰符修饰。
2、被static修饰的内部类只能访问外部类中的静态成员。
匿名内部类: 就是内部类的简化写法。
前提: 内部类可以继承或实现一个外部类或者接口。
格式为: new 外部类名或者接口名(){覆盖类或者接口中的代码, (也可以自定义内容。)}
简单理解:
定义:将一个类定义在另一个类的里面,对里面那个 类就称为内部类(内置类,嵌套类)。
访问特点:
1、内部类可以直接访问外部类中的成员,包括私有成员。
2、而外部类要访问内部类中的成员必须要建立内部类的对象。
内部类的位置:内部类定义在成员位置上,所以:
1、可以被private static成员修饰符修饰。
2、被static修饰的内部类只能访问外部类中的静态成员。
内部类定义在局部位置上:
1、可以直接访问外部类中的成员。
2、同时可以访问所在局部中的局部变量,但必须是被final修 饰的。匿名内部类: 就是内部类的简化写法。
前提: 内部类可以继承或实现一个外部类或者接口。
格式为: new 外部类名或者接口名(){覆盖类或者接口中的代码, (也可以自定义内容。)}
简单理解:
就是建立一个建立一个带内容的外部类或者接口的子类 匿名对象。
class Outer
{
private static int x =3;
static class Inner //内部类
{
//int x = 6;
static void function()
{
//int x = 4;
System.out.println("Inner function :"+x);
//System.out.println("Inner :"+this.x);
//System.out.println("Inner Outer:"+Outer.this.x);
}
}
/*
void method()
{
//System.out.println(x);
Inner in = new Inner();
in.function();
}
*/
static class Inner2
{
void show()
{
System.out.println("Inner2 show");
}
}
public static void method()
{
//Inner.function();
new Inner2().show();
}
}
class InnerClassDemo
{
public static void main(String[] args)
{
//Outer out = new Outer();
//out.method();
//Outer.Inner in = new Outer().new Inner();
//in.function();
//new Outer.Inner().function();
Outer.method();
}
}