内部类 ?
内部类就是在类中定义的类 Inner Class 内部类的this表示本对象 outer.this.data 访问到外部类的成员
内部类能操作外部类 public private protectd 缺省权限 修饰的成员
下面是内部类的例子 :
class Outer
{
private int index =100;
class Inner
{
private int index=50;
void print()
{
int index=10;
System.out.println(index);
System.out.println(this.index);
System.out.println(Outer.this.index);
}
}
void print()
{
Inner inner =new Inner();
inner.print();
}
}
class Test
{
public static void main(String []args)
{
Outer out=new Outer();
out.print();
}
}
首先必须先产生一个 外部类 才能进而产生内部类 内部类允许在 函数中定义不过 作用域只是 函数内部
我们可以在外部类内通过函数 产生内部类对象然后返回对象引用 也可以通过 new 来直接创建内部类
如果 main函数和内部类在一个外部类中 那么main函数不能调用内部类方法 因为静态函数 无法调用非静态函数的
方法 需要另外声明一个类 类可以定义在函数中 条件语句中 语句块中 不管嵌套多深都可以随意访问外部类所有成员
如果局部函数内部类要访问函数的参数或者 变量那么要声明为final 否则不能访问
内部类也可以用 protected修饰 可以在同一个类中被访问 也可以在同一个包中访问
如果声明为private 那么只能在 外部类访问 其他类都不能访问了 即使是同一个包中的类都不能访问 。。
内部类也可以声明为abstract
例子如下 :
class Test
{
public static void main(String []args)
{
Outer out=new Outer(); //声明一个外部类
Outer.Inner inner =out.new Inner(); //声明一个内部类 通过外部类的new构造一个 内部类的对象实例
inner.print(); //调用显示方法
}
}
final 修饰内部类的话 这个类就不能被继承了
static 修是内部类 那么 内部类就不能访问外部类 的非静态成员变量
静态的内部类只能访问静态的成员变量和静态成员方法