黑马程序员---java内部类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



。内部类的对象不能单独存在,必须依赖一个其外层类的对象


。定义在 类内部,方法体、语句块 之外的 非static类 称为普通内部类, 定义在 方法体,语句块 内的类称为局部类


。使用static declared 内部类属于外部类本身,而不是属于外部类的某个对象,访问该 static inner class 使用 外部类.内部类 的格式
static 内部类可以包含 static 成员,也可以包含 非static 成员, static内部类 不能访问外部类的实例成员 即使是 static 内部类的实例方法


。内部类可以直接访问外部类的成员,包括 private 修饰的, 外部类要访问内部类,必须建立内部类对象


。内部类可以被 private、protected 修饰,可以声明为 abstract,可以被其他的内部类继承,也可以声明为 final

。在方法中定义的内部类,如果想在内部类中访问方法中的local variable,则方法中的 “l v” needs to be declared final

。非static 内部类里可以直接访问外部类的 private 成员,非static 内部类实例必须寄存在外部类实例里,非static 内部类里
不能定义 static 成员


。interface 里的内部类 默认使用 public static 修饰

。外部类以外的地方 创建 static内部类  Out.Inner in = new Out.Inner() ;


。匿名内部类 必须 extends 一个父类 或者 implements 一个 interface ,且最多只能 extends/implements 一个 ,匿名内部类访问
外部类的局部变量 只能访问 final 修饰的 


。外部类的 static 成员不能访问 非static 内部类  例:


public class Test
{
    private class Inner{ }
    public static void main(String[] args)
    {
// new Inner() ;   将会出错
    }
}

。内部类的变量名 与 外层类的变量名 或者 局部变量名 出现冲突时 使用 外层类名.this  的方式来访问内部类  例:

class A
{
   private int s = 10;
   public class B
   {
     private int s = 100;
     public void Bb(int s)     //这里是从启动类中传过来的 1000
     {
	System.out.println("s = " + s);   // 这个 s 离 上边的形参 s 最近,所以输出的是 1000
	System.out.println("s = " + this.s);   // 这个是 class B 中的 s 100
	System.out.println("s = " + A.this.s);     // 这个是  class A 中的 s 10
      }
   }
}

public class Test
{
   public static void main(String[] args)
   {
      A aa = new A();
      A.B bb = aa.newB();
      bb.Bb(1000);
   }
}

访问内部类

方法 1).

class A
{
  class B
  {

   }

}

class C
{
  A.B b = new A(). new B();    // 在另一个类C 中访问 class A 中的内部类的格式
}


方法 2).

class A
{
    private int s;
    public class B
    {
	void Bb()
  	{
	   s = 70;
	   System.out.println("B: s = " + s); 

	}

     }
     public void Ba()
     {
	B b = new B();		// 通过在外层类中创建一个方法,在方法中创建 内部类 的对象,
	b.Bb();			     // 在该方法中便可以访问内部类
      }

}

public class Test
{
   public static void main(String[] args)
  { 
      A a = new A();
      a.Ba();
  }

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值