你的位置:首页 > 软件开发 > Java > Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类

Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类

发布时间:2016-03-22 00:00:09
定义:将一个类定义在另一个类的内部。内部的类称为内部类;public class Outer{ class inner{ //省略}} 特点:① 内部类可以 ...

定义:将一个类定义在另一个类的内部。内部的类称为内部类;

public class Outer{

           class inner{

         //省略

}

}

 

特点

①   内部类可以很好的实现隐藏,可以使用protected,private修饰符;

②   内部类可以直接访问外部类的所有成员,包括私有成员;

③   外部类不能直接访问内部类的成员,必须首先要建立内部类的对象才能访问;

④   内部类可以解决一些问题,比如间接的去实现多继承。可以避免修改接口而实现同一个类中两种同名方法的调用;

 

成员内部类及应用

成员内部类特点

①   成员内部类属于外部类的实例成员,成员内部类都可以有public,private,default,protected权限修饰符。在成员内部类中访问外部类的成员方法和属性,要使用“外部类名.this.成员方法”和“外部类名.this.成员属性”的形式;

②   创建成员内部类的实例使用“外部类名.内部类名.实例名=外部类实例名. new 内部类构造方法(参数)”的形式;

成员内部类有以下限制

①   成员内部类不能与外部类重名;

②   不能在成员内部类中定义static属性、方法和类(static,final形式的常量定义除外)。因为一个成员内部类实例必然与一个外部类实例关联,static成员完全可移到其外部类中去;

Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类
 1 public class MemberInnerClass{ 2   public static void main(String []args){ 3     //创建外部类对象 4     Outer1 outer=new Outer1(); 5     //创建内部类对象 6     Outer1.Inner1 inner=outer.new Inner1(); 7     inner.innerShow(); 8      9     System.out.println("--------------外部类访问内部类对象--------------");10     outer.outerShow();11   }12 }13 14 class Outer1{15   private String name="张三";16   private int num1=10;17   public void outerShow(){18     System.out.println(name);19     System.out.println(num1);20     //System.out.println(num2);//外部类不能直接访问内部类的成员21     22     //外部类访问内部类对象23     Inner1 inner =new Inner1();24     inner.innerShow();25   }26   27   //当内部类改成私有时private,仅能在外部类中访问28   public class Inner1{29     private String name="李四";30     private int num2=20;31     private static final int num3=30;//静态常量在内部类中是可以使用的32     //private static int num3=30;//在成员内部类中不能声明静态成员和静态方法33     public void innerShow(){34       System.out.println(name);35       System.out.println(num2);36       37       //成员内部类可以直接访问外部类的属性和方法,包括私有的38       System.out.println("--------------");39       //外部类访问内部类时注释outerShow(),避免死循环40       //outerShow();41       42       //打印外部类中成员属性43       System.out.println("--------------打印外部类中成员属性--------------");44       System.out.println(Outer1.this.name);45       System.out.println(Outer1.this.num1);46     }47   }48 }

原标题:Java学习(十六)、成员内部类,静态内部类,匿名内部类,局部内部类

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。