zoukankan      html  css  js  c++  java
  • 内部类——匿名内部类

     1 /*
     2 1.内部类:在类的内部又定义了一个新的类。被称为内部类。
     3 
     4 2.内部类的分类:
     5     静态内部类:类似于静态变量
     6     实例内部类:类似于实例变量
     7     局部内部类:类似于局部变量
     8 
     9 3.使用内部类编写的代码,可读性很差,能不用尽量不用。
    10 
    11 4.匿名内部类是内部类的一种。
    12     因为这个类没有名字而得名,叫做匿名内部类。
    13 
    14 5.学习匿名内部类主要是为了以后再阅读别人代码的时候,能够理解。
    15 并不代表以后就得这样写。匿名内部类有两个缺点:
    16     缺点1:太复杂,太乱,可读性差
    17     缺点二:没有名字,不能重复使用
    18 */
    19 public class Test01 {
    20     // 静态变量
    21     static String country;
    22 
    23     // 该类在类的内部,所以称为内部类
    24     // 由于前面有static,所以称为“静态内部类”
    25     static class Inner1 {
    26     }
    27 
    28     // 该类在类的内部,所以称为内部类
    29     // 没有static叫做实例内部类
    30     class Inner2 {
    31     }
    32 
    33     // 方法
    34     public void doSome() {
    35         // 局部变量
    36         int i = 100;
    37         // 该类在类的内部,所以称为内部类
    38         // 局部内部类。
    39         class Inner3 {
    40         }
    41     }
    42 
    43     public void doOther() {
    44         // doSome()方法中的局部内部类Inner3,在doOther()中不能用。
    45     }
    46 
    47     public static void main(String[] args) {
    48         MyMath mm = new MyMath();
    49         Compute cc = new ComputeImpl();
    50         mm.mySum(cc, 100, 200);
    51         // 使用匿名内部类,表示这个ComputeImpl这个类没有名字了。
    52         //这里表面看上去好像是接口可以直接new了,实际上并不是接口可以new了。
    53         //后面的{}代表了对接口中方法的实现。
    54         mm.mySum(new Compute() {
    55 
    56             @Override
    57             public int sum(int a, int b) {
    58                 // TODO Auto-generated method stub
    59                 return a + b;
    60             }
    61         }, 200, 300);
    62     }
    63 }
    64 
    65 // 负责计算的接口
    66 interface Compute {
    67     // 抽象方法
    68     int sum(int a, int b);
    69 }
    70 
    71 // Compute接口的实现类
    72 class ComputeImpl implements Compute {
    73     public int sum(int a, int b) {
    74         return a + b;
    75     }
    76 }
    77 
    78 // 数学类
    79 class MyMath {
    80     // 数学求和方法
    81     public void mySum(Compute c, int x, int y) {
    82         int retValue = c.sum(x, y);
    83         System.out.println(x + "+" + y + "=" + retValue);
    84     }
    85 }

    代码中将接口以及接口的实现类都写到了一块。

  • 相关阅读:
    洛谷P1057 传球游戏
    洛谷 CF937A Olympiad
    洛谷P4057 晨跑
    New blog
    DHTMLX系列组件的学习笔记
    javascript学习笔记
    typeof 使用介绍
    tomcat启动后ids页面无法访问
    快捷键accesskey
    jquery回调函数callback的使用
  • 原文地址:https://www.cnblogs.com/HeSC980513/p/12924433.html
Copyright © 2011-2022 走看看