zoukankan      html  css  js  c++  java
  • Java面向对象之内部类(匿名内部类)

    一、基础概念  

      匿名内部类:简化书写的内部类。其实匿名内部类就是一个子类对象。

      前提:内部类需要继承或者实现外部的类或者接口。

      格式:new 父类或者接口(){定义子类的内容}

    二、将内部类定义到局部的实例代码  

     1 /*
     2 class Outer
     3 {
     4     int num = 2;
     5     //内部类
     6     class Inner
     7     {
     8         int num = 3;
     9         void show()
    10         {
    11             int num = 4;
    12             System.out.println("show ..."+num);
    13             System.out.println("show ..."+Inner.this.num);
    14             System.out.println("show ..."+Outer.this.num);
    15         }
    16     }
    17     public void method1()
    18     {
    19         new Inner().show();
    20     }
    21 }
    22 */
    23 
    24 //将上面代码的内部类定义到局部位置上。
    25 class Outer
    26 {
    27     private int num = 2;
    28     public void method1()
    29     {
    30         final int x=3;  //内部类在局部时,只能被final修饰的局部常量,才可以被访问。
    31         class Inner 
    32         {
    33             void show()
    34             {
    35                 int num = 4;
    36                 System.out.println("x="+x);
    37                 System.out.println("show ..."+num);
    38                 System.out.println("show ..."+Outer.this.num);
    39             }
    40         }
    41         
    42         //创建内部类对象
    43         Inner in = new Inner();
    44         in.show();
    45     }
    46 }
    47 
    48 class InnerClassDemo2
    49 {
    50     public static void main(String[] args) 
    51     {
    52         new Outer().method1();
    53     }
    54 }

      

    三、匿名内部类实例代码(一)

     1 abstract class Demo
     2 {
     3     abstract void show1();
     4 }
     5 
     6 class OuterDemo
     7 {
     8     int num = 4;
     9     /*
    10     class Inner extends Demo
    11     {
    12         //复写
    13         public void show1()
    14         {
    15             System.out.println("show1 ..."+num);
    16         }
    17     }
    18     Inner in = new Inner();
    19     in.show();
    20     */
    21     
    22 //将上面注释的代码用匿名内部类的方式显示
    23 
    24     public void method2()
    25     {
    26         //匿名内部类
    27         new Demo()
    28         {
    29             public void show1()
    30             {
    31                 System.out.println("show1 ..."+num);
    32             }
    33         }.show1();
    34     }
    35 }
    36 
    37 class InnerClassDemo2
    38 {
    39     public static void main(String[] args) 
    40     {
    41         new OuterDemo().method2();
    42     }
    43 }

      

    四、匿名内部类实例代码(二)

     1 abstract class Demo
     2 {
     3     abstract void show1();
     4     abstract void show2();
     5 }
     6 
     7 class OuterDemo
     8 {
     9     int num = 4;
    10     /*
    11     class Inner extends Demo
    12     {
    13         //复写
    14         public void show1()
    15         {
    16             System.out.println("show1 ..."+num);
    17         }
    18         public void show2()
    19         {
    20             System.out.println("show2 ..."+num);
    21         }
    22     }
    23     Inner in = new Inner();
    24     in.show();
    25     */
    26     
    27     //将上面注释的代码用匿名内部类的方式显示
    28     public void method2()
    29     {
    30         //匿名内部类
    31         Demo a = new Demo()
    32         {
    33             void show1()
    34             {
    35                 System.out.println("show1 ..."+num);
    36             }
    37             void show2()
    38             {
    39                 System.out.println("show2 ..."+num);
    40             }
    41         };
    42         a.show1();
    43         a.show2();
    44     }
    45 }
    46 
    47 class InnerClassDemo2
    48 {
    49     public static void main(String[] args) 
    50     {
    51         new OuterDemo().method2();
    52     }
    53 }

      

  • 相关阅读:
    【持续更新】Java知识点整理-util
    【持续更新】Java知识点整理-基础
    【持续更新】Java知识点整理-JVM
    notepad++中写markdown
    VirtualBox中Alpine Linux + Docker安装记录
    Alpine Linux配置网络
    从编码的历史了解编码
    关于摄影器材的一些知识点
    服务器(Linux)上运行python总结
    命令行运行Python脚本时传入参数的三种方式
  • 原文地址:https://www.cnblogs.com/zhuxr/p/9003225.html
Copyright © 2011-2022 走看看