首页 > 学院 > 开发设计 > 正文

内部类

2019-11-15 00:21:22
字体:
来源:转载
供稿:网友
内部类

1.静态内部类

 1 package innerclass; 2 /* 3  * 静态内部类 4  * 静态类只能访问外部类的静态成员变量或方法 5  * StaticInner.Inner inner = new StaticInner.Inner(); 6  */ 7 class StaticInner 8 {  9     PRivate static int a = 4;10 11     public static class Inner12     {13         public void test()14         {15             System.out.println(a);16         }17     }18 }19 20 public class StaticInnerClassTest21 {22     public static void main(String[] args)23     {24         //定义静态内部类的吗对象25         StaticInner.Inner inner = new StaticInner.Inner();26 27         inner.test();28     }29 }

2.成员内部类

 1 package innerclass; 2 /* 3  * 成员内部类 4  * 可以访问一切的外部的成员变量和方法 5  * MemberInner.Inner2 inner = (new MemberInner()).new Inner2(); 6  */ 7 class MemberInner 8 { 9     private int a = 4;10     11     public class Inner212     {13         14         private int a = 5;15         16         //访问外部类的成员变量17         public void doSomething()18         {19             System.out.println(MemberInner.this.a);20         }21         22         //访问内部类的成员变量23         public void doSomething1()24         {25             System.out.println(this.a);26             System.out.println(a);27         }28         29     }30     31     public void method()32     {33         //在外部类中创建内部类34         MemberInner.Inner2 inner = this.new Inner2();35         Inner2 inner2 = this.new Inner2();36     }37 }38 39 public class MemberInnerClassTest40 {41     public static void main(String[] args)42     {43         //定义成员内部类对象44         MemberInner.Inner2 inner = (new MemberInner()).new Inner2();45 46         inner.doSomething();        47     }48 }

3.局部内部类

 1 package innerclass; 2 /* 3  * 局部内部类 4  * 不能用public,protected,private,static修饰 5  * 只能访问final修饰的局部变量 6  */ 7 class LocalInner 8 { 9     public void doSomething()10     {11         final int a = 4;12         13         class Inner314         {15             public void test()16             {17                 System.out.println(a);18             }19         }20         21         (new Inner3()).test();22     }23 }24 25 public class LocalInnerClassTest26 {27     public static void main(String[] args)28     {29         LocalInner localInner = new LocalInner();30         31         localInner.doSomething();32         33     }34 }

4.匿名内部类

 1 package innerclass; 2 /* 3  * 匿名内部类(局部内部类的一种形式) 4  * 没有名字的类 5  * 没有关键字class,extends,implements 6  * 没有构造方法 7  * 匿名内部类会隐式地继承一个父类或实现一个接口。 8  */ 9 import java.util.Date;10 public class AnonymousInnerClassTest11 {12     @SuppressWarnings("deprecation")13     public String get(Date date)14     {15         return date.toLocaleString();16     }17      18     public static void main(String[] args)19     {20         AnonymousInnerClassTest test = new AnonymousInnerClassTest();21         22         //String str = test.get(new Date());;23         //System.out.println(str);24         25         //定义一个匿名内部类,它继承了Date类(或者实现某一个接口)26         String str = test.get(new Date()27         { 28             //重写Date类的toLocaleString()方法29             public String toLocaleString()30             {31                 return "hello world";32             }33         });34         System.out.println(str);35     }    36 }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表