Java内部类简介说明

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706

转自:
http://www.java265.com/JavaCourse/202204/3129.html
下文笔者讲述Java内部类的简介说明,如下所示:
内部类的简介
  1. 我们将在其他类中的类称之为“内部类”
  2. 内部类的定义位置:
  3.      定义在类中方法外的类
  4. 成员内部类可以使用不同的修饰关键字进行修饰,不同的修饰关键字会生成不同的访问方式
复制代码
内部类的定义方法
  1. class 外部类 {
  2. // 外部类的成员位置
  3.     class 内部类{
  4.     // 内部类的成员位置
  5.     }
  6. }
复制代码
例:内部类定义
  1. class Person { //外部类
  2.     String name;
  3.     class Heart { //内部类
  4.         // 成员
  5.     }
  6. }
复制代码
创建内部类对象的方法
  1. 外部类 外部类对象名 = new 外部类();
  2. 外部类.内部类 内部类对象名 = 外部类对象名.new 内部类();
  3. 简写方式:
  4. 外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
复制代码
例:
  1. //外部类
  2. class Outer {
  3.     // 外部类成员变量
  4.     private  String outer_filed = "我是外部类成员变量";
  5.     //成员内部类
  6.     class Inner {
  7.         // 内部类成员变量
  8.         private String inner_filed = "我是内部类成员变量";
  9.         //内部类的成员方法
  10.         public void inner_method() {
  11.             System.out.println("inner_method....run... " + inner_filed );
  12.         }
  13.     }
  14.     // 外部类成员方法
  15.     public void outer_method(){
  16.         System.out.println("outer_method....run... " + outer_filed );
  17.     }
  18. }
  19. // 测试类
  20. public class InnerDemo {   
  21.    public static void main(String[] args) {        
  22.      // 创建外部类对象         
  23.      Outer o  = new Outer();        
  24.      // 创建内部类对象        
  25.      Outer.Inner i = p.new Inner();//表示通过外部类对象创建内部类对象        
  26.      // 调用外部类方法        
  27.      i.outer_method();        
  28.      // 调用内部类方法        
  29.      i.inner_method();        
  30.    }
  31. }
复制代码
  1. 注意事项:
  2.     内部类是一个独立的类
  3.     编译之后的内部类会被编译成独立的.class文件,类的名称会使用“类名和$符号”组成
  4. 例:Outer$Inner.class
  5. 注意事项:
  6. 1.当一个内部类被私有化后,这个内部类就无法在外部进行访问
  7. 2.私有成员的内部类也是外部类的成员
  8. 3.外部类可以访问私有成员方法,本类之外无法访问
  9. 4.私有成员内部类,只能在外部类中其他成员方法中创建成员内部类对象,通过对象的方法访问"私有成员内部类"的成员
复制代码
例:
  1. //外部类
  2. class Outer {
  3.     // 外部类成员变量
  4.     private  String outer_filed = "我是外部类成员变量";
  5.     //被私有的成员内部类
  6.     private class Inner {
  7.         // 内部类成员变量
  8.         private String inner_filed = "我是内部类成员变量";
  9.         //内部类的成员方法
  10.         public void inner_method() {
  11.             System.out.println("inner_method....run... " + inner_filed );
  12.         }
  13.     }
  14.     // 外部类成员方法
  15.     public void outer_method(){
  16.         System.out.println("outer_method....run... " + outer_filed );
  17.     }
  18.     /*
  19.         被私有的外部类成员方法:
  20.             当前外部类的成员方法被私有了,因此此方法外界无法访问。但是本类中是可以正常访问的。       我们可以在本类中定义一个公开的方法来调用私有的方法,然后创建对象调用公开的方法即可访问。
  21.     */
  22.     // 外部类公开的方法
  23.     public void pub_method(){
  24.         // 此公开方法可以访问本类私有的成员
  25.         Inner inner = new Inner();
  26.         inner.inner_method();
  27.         // 可以在此方法内访问创建私有内部类的对象,然后调用内部类方法,最后通过外部类对象调用此       // 方法即可完成私有成员内部类方法的间接调用
  28.     }
  29. }
  30. // 测试类
  31. public class InnerDemo {   
  32.    public static void main(String[] args) {        
  33.      // 创建外部类对象         
  34.      Outer o  = new Outer();        
  35.      // 调用外部类访问私有内部类的公开方法 , 间接调用私有成员内部类
  36.      o.pub_method();
  37.    }
  38. }
复制代码
被静态的成员内部类
  1. 外部类.内部类 变量名 = new 外部类.内部类();
复制代码
例:
  1. //外部类
  2. class Outer {
  3.     // 外部类成员变量
  4.     private  String outer_filed = "我是外部类成员变量";
  5.     //被静态的成员内部类
  6.     static class Inner {
  7.         // 内部类成员变量
  8.         private String inner_filed = "我是内部类成员变量";
  9.         //内部类的成员方法
  10.         public void inner_method() {
  11.             System.out.println("inner_method....run... " + inner_filed );
  12.         }
  13.     }
  14.     // 外部类成员方法
  15.     public void outer_method(){
  16.         System.out.println("outer_method....run... " + outer_filed );
  17.     }
  18. }
  19. // 测试类
  20. public class InnerDemo {   
  21.    public static void main(String[] args) {        
  22.      // 创建内部类对象         
  23.      Outer.Inner oi = new Outer.Inner();
  24.      // 调用内部类方法
  25.      oi.inner_method();
  26.    }
  27. }
复制代码
静态成员内部类的静态方法
  1. //外部类
  2. class Outer {
  3.     // 外部类成员变量
  4.     private  String outer_filed = "我是外部类成员变量";
  5.     //被静态的成员内部类
  6.     static class Inner {
  7.         // 内部类成员变量
  8.         private String inner_filed = "我是内部类成员变量";
  9.         //内部类的成员方法
  10.         public static void static_inner_method() {
  11.             System.out.println("静态内部类的静态成员方法static_inner_method....run... " );
  12.         }
  13.     }
  14. }
  15. // 测试类
  16. public class InnerDemo {   
  17.    public static void main(String[] args) {        
  18.      // 直接使用内部类名访问         
  19.      Outer.Inner.static_inner_method();
  20.    }
  21. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表