理解 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 也必须声明为抽象的。
我是 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 也必须声明为抽象的。