例如:
class Demo { private int x = 3; class Inner { void function() { System.out.println(""); } } }
称类Inner 为内部类
1.内部类可以直接访问外部类中的成员,包括类中的私有成分
例如————
class Demo { private int x = 3; class Inner { void function() { System.out.println(""+x);//其中X是外部类的私有变量 } } }
2.外部类要访问内部类,必须建立内部类对象
例如————
class Demo { private int x = 3; class Inner { void function() { System.out.println(""); } } void method() { Inner in = new Inner();//必须建立内部类对象才可以访问 in.function(); } }
class Demo { private int x = 3; class Inner { void function() { System.out.println(""); } } void method() { Inner in = new Inner();//必须建立内部类对象才可以访问 in.function(); } } class Test { public static void main(String[] args) { Demo.Inner in = new Demo().new Inner(); in.function(); } }
**当内部类在成员变量上的位置的时候
访问格式:
外部类 . this.
例如:private
static
当内部类被static修饰后,只能直接访问外部类中的static成员;
例如——————
class Demo { private int x = 3; static class Inner { void function() { System.out.println(""+x); } } }
**** 当设计成静态内部类时,
外部类中访问static类中的非静态方法时: new Demo.Inner().function();
在外部类中直接访问static内部类中的static 方法时:
Demo.Inner.function();
例如:
class Demo
{
private int x = 3;
static class Inner
{
static void function()
{
System.out.println("");
}
}
class Inners
{
static void show()
{
System.out.println("");
}
}
public static void method()
{
Inner .function();
new Inner.show();//不允许
}
}
当描述事物的时候,事物的内部还有事物,该事物就用内部类来描述
class Demo { private int x = 3; void method() { class Inner { void function() { System.out.println(""); } } new Inner().function(); } }
***局部的内部类不可以定义static 方法
1.不可以被成员修饰符修饰
2.可以直接访问外部类中的成员,因为还是持有外部类中的引用,但是不可以访问它所在的局部变量中的变量,只能访问被final修饰的局部变量。