理解 java 语句

Understanding a java statement

我是 java 的新手,正在做一个涉及使用 javax.mail.Authenticator 的程序,但我无法理解一个特定的语句:

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

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

我的意思是,我从未使用过或见过这种声明,所以任何类型的提示或参考都会有所帮助。
提前致谢。

因为classAuthenticator是抽象的,你不能实例化一个抽象的class和接口。 抽象 class 是声明为抽象的 class——它可能包含也可能不包含抽象方法。抽象classes不能被实例化,但是可以被subclassed。 这就是为什么你的代码看起来像这样 -> 当一个抽象 class 被 subclassed 时,subclass 通常为其父 [=12] 中的所有抽象方法提供实现=].但是,如果不是,则 subclass 也必须声明为抽象的。