美文网首页
6.8匿名内部类

6.8匿名内部类

作者: 十六只猴子王 | 来源:发表于2019-03-28 13:25 被阅读0次

匿名内部类

如果接口的实现类(或者是父类的子类),只需要使用唯一的一次。
那么这种情况就可以省略该类的定义,而改为使用【匿名内部类】

  • 匿名内部类的格式:
    接口名称 对象名 = new 接口名称{//覆盖重写所有抽象方法};
package InnerClass.匿名内部类;

public interface MyaInterface {
    public abstract  void mehtod();
    void method();
}

package InnerClass.匿名内部类;

public class MyInterfaceImpl implements MyaInterface {
    @Override
    public void mehtod() {
        System.out.println("覆盖接口可方法");
    }
}
package InnerClass.匿名内部类;

public class DemoMain {
    public static void main(String[] args) {
       /* MyaInterface obj = new MyInterfaceImpl();
        obj .mehtod();;*/
//        MyaInterface same = new MyaInterface() ;//错误写法
            MyaInterface  obj = new MyaInterface() {
                @Override
                public void mehtod() {
                    System.out.println("匿名内部类实现了方法");
                }
            };
    }
}

匿名内部类的注意事项

  • 对格式“new 接口名称(){...}”进行解析:
    1.new代表创建对象的动作
    2.接口名就是匿名内部类需要实现哪个接口
    3.{...}这才是匿名内部类的内容

  • 另外需要注意的问题

1.匿名内部类,在【创建对象】的时候,只能唯一的 使用一次

2.匿名对象,在【调用方法】的时候,只能调用唯一一次。如果希望同一个对象,调用多次方法,那么必须给对象起个名字

3.匿名内部是省略了【实现类/子类名称】,但是匿名对象是省略了【对象名称】强调:匿名内部类和匿名对象不是一回事!!!


public class DemoMain {
    public static void main(String[] args) {
       /* MyaInterface obj = new MyInterfaceImpl();
        obj .mehtod();;*/
//        MyaInterface same = new MyaInterface() ;//错误写法

        //使用匿名内部类,但不是匿名对象,对象名称就叫objA
          MyaInterface  objA = new MyaInterface() {
                @Override
                public void mehthod1() { System.out.println("匿名内部类实现了方法1a"); }

                @Override
                public void method2() { System.out.println("匿名内部类实现了方法2a"); }
            };
            objA.mehthod1();
            objA.method2();
        System.out.println("=======================");
        //使用了匿名内部类,而且省略了对象名称,也是匿名对象
        new MyaInterface() {
            @Override
            public void mehthod1() { System.out.println("匿名内部类实现了方法1b"); }

            @Override
            public void method2() { System.out.println("匿名内部类实现了方法2b"); }
        }.mehthod1();
        //因为匿名对象无法调用第二次方法,所以需要在创建一个匿名内部类的匿名对象才能调用两次方法


    }
}

相关文章

  • 6.8匿名内部类

    匿名内部类 如果接口的实现类(或者是父类的子类),只需要使用唯一的一次。那么这种情况就可以省略该类的定义,而改为使...

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java匿名内部类

    导语 学完匿名内部类就懂的情书。 主要内容 接口与抽象类和匿名内部类的关系 具体内容 匿名内部类也就是没有名字的内...

  • java中的匿名内部类总结

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内...

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • 技术问 - 匿名内部类

    匿名内部类 匿名内部类的格式 匿名内部类的本质是什么? 代码: 匿名内部类在开发中使用: 看结果写代码

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • Android菜鸟起飞|三种方法实现监听事件

    Android实现监听事件的三种方式(匿名内部内实现,外部类实现,接口实现)详解 1. 使用匿名内部类的方式实现监...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • Java 内部类

    1. 内部类 概念:在一个类的内部再定义一个完整的类内部类分为 4 类:成员内部类、静态内部类、局部内部类、匿名内...

网友评论

      本文标题:6.8匿名内部类

      本文链接:https://www.haomeiwen.com/subject/dxwfbqtx.html