匿名内部类

下面代码中,Person24 是一个抽象类,这意味着它不能被直接实例化,只能通过继承它的子类来实现其抽象方法。代码片段中展示了如何使用匿名内部类来实现一个抽象类的实例。

package chapter04;

public class Java24_Object_匿名内部类 {
    public static void main(String[] args) {
        // TODO 面向对象
        // 在某些场合下,类的名字不重要,我们只想要使用类中的方法或功能,那么此时我们可以采用特殊的语法:匿名类
        // 所谓匿名类,就是没有名字的类, 创建只使用一次的类的对象
        Me me = new Me();

        me.sayHello(new Person24() {
            @Override
            public String name() {
                return "zhangsan";
            }
        });
        // 上面匿名类的写法等价于下面的代码
        // 创建一个名为 Zhangsan 的类继承自 Person24
        class Zhangsan extends Person24 {
            @Override
            public String name() {
                return "zhangsan";
            }
        }
        // 创建 Zhangsan 类的实例并传递给 sayHello 方法
        Person24 person = new Zhangsan();
        me.sayHello(person);
    }
}

abstract class Person24 {
    public abstract String name();
}

class Me {
    public void sayHello(Person24 person24) {
        System.out.println("Hello, " + person24.name());
    }
}

下面代码片段中展示了如何使用匿名内部类来实现一个接口的实例。

package chapter04;

public class Java24_Object_匿名内部类 {
    public static void main(String[] args) {
        // 使用匿名内部类来实现接口 Fly24
        new Fly24() {
            @Override
            public void fly() {
                System.out.println("使用飞行器飞翔");
            }
        }.fly();
        // 上面匿名类的写法等价于下面的代码
        // 创建一个名为 PersonFly24 的类实现接口 Fly24
        class PersonFly24 implements Fly24 {
            @Override
            public void fly() {
                System.out.println("使用飞行器飞翔");
            }
        }

        // 创建 PersonFly24 类的实例并调用 fly 方法
        PersonFly24 personFly24 = new PersonFly24();
        personFly24.fly();
    }
}

// 接口中定义的属性都是常量,不能更改
// 接口中定义的方法都是抽象的
interface Fly24 {
    void fly();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重剑DS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值