内部类

本文详细介绍了Java中的内部类概念,包括内部类与外围类的关系、内部类的不同类型(如方法内部类、匿名内部类和嵌套类)及其使用特点。此外,还探讨了内部类如何访问外围类的成员变量等问题。

在类内部定义的类称为内部类;

当创建了内部类对象时,他就会与创造他的外围类有了某种联系,也就是可以直接访问外围类的属性而不需要任何的特殊条件(外围类创建内部类对象时,此内部类对象会秘密的的捕获一个指向外围类的引用,于是就可以通过这个引用来访问外围类的成员)。

内部类得到外围类的引用由两种方式,.this与.new(使用.this后,得到创建该内部类时使用的外围类对象的引用,new则是创建了一个新的引,而且需要注意的是,在创建外围类对象之前,不可能创建内部类的对象(嵌套类除外) ;

方法内部类的创建不能加访问修饰符。 另外,方法内部的类也不是在调用方法时才会创建的,它们一样也被编译了。方法内部类访问方法的内部属性时该属性必须为final类型的。

匿名内部类:匿名类可以创建接口,抽象类,与普通类的对象。创建接口时,必须实现接口中所有方法。如果为匿名内部类传递参数时且该匿名内部类调用到了该参数,则该参数必须为fianl类型。由于匿名内部类是匿名的,自然没有构造器,如果想模仿构造器,可以采用实例初始化({})

  1.  public A getA(){  
  2. return new A(){  
  3.     int num = 0;  
  4.     String str;  
  5.     {  
  6.         str = "javaeye";  
  7.         System.out.println("hello robbin");  
  8.     }  
  9. };  
  10.    } 

嵌套类:static的内部类就叫做嵌套类

使用嵌套类时有两点需要注意: 
   a、创建嵌套类对象时,不需要外围类 
   b、在嵌套类中,不能像普通内部类一样访问外围类的非static成员

套类还有特殊之处,就是嵌套类中可以有static方法,static字段与嵌套类,而普通内部类中不能有这些。

  1.  public class StaticClass {  
  2. private int num;  
  3. private static int sum = 2;  
  4. private static class StaticInnerClass{  
  5.     public int getNum(){  
  6.     //只能访问sum,不能访问num  
  7.                return sum;  
  8.     }  
  9. }  
  10.   }  
  11.   public class Test {  
  12. public static void main(String [] args){  
  13.                //可以直接通过new来创建嵌套类对象  
  14.     StaticClass.StaticInnerClass inner = new StaticClass.StaticInnerClass();  
  15.     inner.getNum();  
  16. }  
  17.   } 

 

 

 

 

转载于:https://www.cnblogs.com/shuyuwo/archive/2013/01/11/2856865.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值