zoukankan      html  css  js  c++  java
  • 27.1 匿名内部类的使用



    package
    day27_内部类.匿名内部类; /* * 匿名内部类: * 可以把匿名内部类看成是一个没有名字的局部内部类 * 定义在方法当中 * 必须在定义匿名内部类的时候创建他的对象 * 格式: * new 类/接口(){ * 如果是创建了继承这个类的子类对象,我们可以重写父类的方法 * 如果是创建了实现这个接口的子类对象,我们必须要实现该接口的所有方法 * }; * 原理:而是创建了继承这个类的子类对象或者是创建了实现这个接口的子类对象 * */ public class InnerDemo3 { public static void main(String[] args) { Dog d = new Dog(); d.fun(); } } class Animal { public void eat() { System.out.println("吃东西"); } } //正常写法 class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); } } //匿名内部类(没有名字的局部内部类)写法 class Dog { public void fun() { /*new Animal() { @Override public void eat() { System.out.println("狗吃肉"); } }.eat(); */ Animal a = new Animal() { @Override public void eat() { System.out.println("狗吃肉"); } }; a.eat(); a.eat(); } }

    输出

    二、new 接口

    public class InnerDemo4 {
        public static void main(String[] args) {
            Outer o = new Outer();
            o.method();
        }
    }
    
    interface Inner {
        public void fun();
    }
    
    class Outer {
        public void method() {
            /*
            new Inner() {
    
                @Override
                public void fun() {
                    System.out.println("i am fun");
                }
            }.fun();
            */
    
            Inner i = new Inner() {
    
                @Override
                public void fun() {
                    System.out.println("i am fun");
                }
            };
            i.fun();
            i.fun();
        }
    }

    输出

  • 相关阅读:
    670. Maximum Swap
    653. Two Sum IV
    639. Decode Ways II
    636. Exclusive Time of Functions
    621. Task Scheduler
    572. Subtree of Another Tree
    554. Brick Wall
    543. Diameter of Binary Tree
    535. Encode and Decode TinyURL
    博客园自定义背景图片
  • 原文地址:https://www.cnblogs.com/longesang/p/11243482.html
Copyright © 2011-2022 走看看