内部类、匿名内部类

内部类、匿名内部类

内部类

内部类是指定义在另一个类的内部的类。内部类可以访问其外部类的私有成员,包括私有方法和私有变量。

内部类的作用:

1、封装:内部类可以访问外部类的私有成员,因此可以使用内部类来封装实现细节,隐藏对外部的访问。

2、代码组织:内部类可以把相关的代码组织在一起,提高代码的可读性和维护性。

3、回调和事件处理:内部类可以用作回调和事件处理程序,因为它们可以访问外部类的成员并且可以访问外部类的对象。

匿名内部类

匿名内部类是一个没有名字的内部类。它通常用于创建一个实现某个接口或抽象类的对象,或者创建一个只有一种方法的类的对象。匿名内部类可以直接实现一个接口或抽象类的方法,并且可以在一行代码中创建对象并初始化其成员变量。

public class AnonymousInnerClass {
    public static void main(String[] args) {
        Greeting greeting = new Greeting() {
            @Override
            public void sayhello() {
                System.out.println("hello!");
            }
        };
        greeting.sayhello(); //hello!
    }
}

interface Greeting {
    void sayhello();
}

接口中的方法必须全部实现

public class AnonymousInnerClass {
    public static void main(String[] args) {
        Greeting greeting = new Greeting() {
            @Override
            public void sayhello() {
                System.out.println("hello!");
            }

            @Override
            public void sayBye() {
                System.out.println("bye!");
            }
        };
        greeting.sayhello(); //hello!
        greeting.sayBye(); //bye!
    }
}

interface Greeting {
    void sayhello();

    void sayBye();
}

实现类中特定的方法

public class ClassAnonymousInnerClass {
    public static void main(String[] args) {
        Person person = new Person() {
            @Override
            void sayMyName() {
                System.out.println("no no");
            }

//            @Override
//            void sayMyAge() {
//                System.out.println("yes yes");
//            }
        };
        person.sayMyName(); //no no
        person.sayMyAge(); //我十一岁
    }
}

class Person {

    public Person() {

    }

    void sayMyName() {
        System.out.println("我的名字是jack");
    }

    void sayMyAge() {
        System.out.println("我十一岁");
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小C卷Java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值