我是java的新手,正在做一个涉及使用javax.mail.Authenticator的程序,但是我在理解以下特定语句时遇到了麻烦:

Authenticator auth = new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
};


我想知道为什么使用Authenticator运算符创建的new对象也具有覆盖方法的主体?

我的意思是,我从未使用过或看到过这种陈述,因此任何提示或参考都将有所帮助。
提前致谢。

最佳答案

因为类Authenticator是抽象的,所以您无法实例化抽象的类和接口。
抽象类是被声明为抽象的类-它可能包含也可能不包含抽象方法。抽象类不能实例化,但是可以被子类化。
这就是为什么您的代码看起来像这样->当抽象类被子类化时,该子类通常为其父类中的所有抽象方法提供实现。但是,如果没有,则子类也必须声明为抽象。

10-08 09:00