• 内部类


    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 Inner
    12     {
    13         public void test()
    14         {
    15             System.out.println(a);
    16         }
    17     }
    18 }
    19 
    20 public class StaticInnerClassTest
    21 {
    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 Inner2
    12     {
    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 MemberInnerClassTest
    40 {
    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 Inner3
    14         {
    15             public void test()
    16             {
    17                 System.out.println(a);
    18             }
    19         }
    20         
    21         (new Inner3()).test();
    22     }
    23 }
    24 
    25 public class LocalInnerClassTest
    26 {
    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 AnonymousInnerClassTest
    11 {
    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 }
  • 相关阅读:
    .net中的委托
    GridView, DataList and ListBox 行 单击与双击事件处理
    ChineseCalendar类[转]
    数据契约(DataContract)
    XPath 语法(复习)
    正则表达式学习笔记
    瑞星笔试:现场上机做题[转]
    发送带有附件的电子邮件使用 Cdosys.dll 库
    DataContractJsonSerializer 类 操作json类型数据
    i guess a bug on Castle
  • 原文地址:https://www.cnblogs.com/daneres/p/4535252.html
Copyright © 2020-2023  润新知