zoukankan      html  css  js  c++  java
  • 匿名内部类了解一二

    1.    匿名内部类首先是一个类的内部定义的,是用来帮助这个外部类去更好的实现一些功能,主要用在想方法传递一个对象做为参数。

    public void fun(new Persion{System.out.printIn("Hi")});
    

     向方法传了一个person的对象。Person是外部类,匿名类只是一个类体,这个类体创建的对象上转型为Person的对象了。

    2.    转载自https://blog.csdn.net/u011983779/article/details/53293412

    Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
    
                    }
                };
    
     new View.OnClickListener(){
                @Override
                public void onClick(View v) {
    
                }
            };
    

     上面是我们平时经常用的方法,它们就是典型的匿名内部类,但是我没从这里看出来它们什么类没有名字,不过知道new 一个接口肯定是不合理的,下面就将匿名还原:

    abstract class Person {
        public abstract void eat();
    }
    
    class Child extends Person {
        public void eat() {
            System.out.println("eat something");
        }
    }
    
    public class Demo {
        public static void main(String[] args) {
            Person p = new Child();
            p.eat();
        }
    }
    

     可以看到,我们用Child继承了Person类,然后实现了Child的实例,将其向上转型为Person抽象类的引用,而Child类就是我们在匿名内部类中隐藏的类,写成匿名类:

    abstract class Person {
        public abstract void eat();
    }
    
    public class Demo {
        public static void main(String[] args) {
            Person p = new Person() {
                public void eat() {
                    System.out.println("eat something");
                }
            };
            p.eat();
        }
    }
    

     是不是一下子就清晰了,反正我是这样的,至于匿名内部类特点啥的就不说了

  • 相关阅读:
    学习进度条7
    2016年秋季个人阅读计划
    WampServer中MySQL中文乱码解决
    LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”
    人月神话阅读笔记03
    人月神话阅读笔记02
    个人总结
    人月神话阅读笔记01
    学习进度条15
    学习进度14
  • 原文地址:https://www.cnblogs.com/baxianhua/p/9773520.html
Copyright © 2011-2022 走看看