java 学习 内部类 第六天

来源:互联网 发布:安全设置阻止java运行 编辑:程序博客网 时间:2024/05/02 03:06

内部类  ? 

 

内部类就是在类中定义的类 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 修是内部类 那么 内部类就不能访问外部类 的非静态成员变量   

静态的内部类只能访问静态的成员变量和静态成员方法  

 

 

 

 

 

原创粉丝点击