java 内部类小结

内部类:指的是一个类的定义放在另一个类的内部。内部类作为外部类的一个成员,并且依附于外部类而存在的。

              内部类仍是一个独立的额的类,每个内部类都能独立的继承自一个(接口)的实现,所以无论外围类是否已经集成了某个接口的实现,对于内部类都没有影响。

内部类分为4种:

              成员内部类:在一个包含类中定义的不使用静态修饰符的类型
                                   与成员变量、方法同一个层次
                                    可以访问包含类所有的成员
                                    在包含类中中创建成员内部类实例的语法:
                                    this.new Innerclass();
                                    在包含类外创建成员内部类实例的语法
                                    (new Outerclass()).new Innerclass();

              方法内部类:定义在方法体中的类
                                   方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化
                                   最少使用的内部类形式
                                   如同本地变量的定义,不允许有访问修饰符 
                                    只能访问用final修饰的本地变量

              匿名内部类:没有名字的内部类
                                   只用到类的一个实例
                                   类在定义后马上用到
                                   类非常小(OLD SUN推荐是在4行代码以下)
                                   给类命名并不会导致你的代码更容易被理解

                                

              静态内部类:不能与包含类同名
                                    编译后生成一个完全独立的类文件
                                    只能访问包含类所有静态变量、静态方法
                                    要创建嵌套类的对象,并不需要其外围类的对象
                                    创建静态内部类实例的语法:
                                    Outer.Inner inner = new Outer.Inner();

package study3_3;
public class demo01 {

 public static void main(String[] args) {
  //Outer.Inner2 inner2 = new Outer.Inner2();
  
  Outer outer = new Outer();
  outer.setName("tom");
  System.out.println(outer.innerClass());
  
  //要获得一个内部类,必须先创建外部类
  /*Outer outer = new Outer();
  Outer.Inner inner = outer.getInnerClass();
  
  inner.getInfo();
  
  Outer.Inner inner2 = outer.new Inner();*/
 }
}
 
package study3_3;
public class Outer {

 private String name;
 public String innerClass(){
  class Inner{
   public String getInfo(){
    return"hello:"+name;
   }
  }
  Inner inner =new Inner();
  return inner.getInfo();
 }
 public String getName(){
  return name;
 }
 public void setName(String name){
  this.name=name;
 }
 public String getInfo(){
  return name;
 }
 //成员内部类
 class Inner{
  private String str;
  public String getInfo(){
   return str +name;
  }
  //静态内部类
  /*static class Inner2{
   public void pribtInfo(){
//    System.out.println(name);
   }
  }*/
 }
}



                                  
                                 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值