sil*_*ver 1 java inheritance extends final
可能重复:
该线程不询问如何扩展
final类.它问 为什么声明的类final可能会扩展另一个类.
从这个线程:
一
final类是仅仅是一个类不能扩展.
但是,我有一个我声明的辅助类final和extends另一个类:
public final class PDFGenerator extends PdfPageEventHelper {
private static Font font;
private PDFGenerator() {
// prevent instantiation
}
static {
try {
BaseFont baseFont = BaseFont.createFont(
"/Trebuchet MS.ttf",
BaseFont.WINANSI,
BaseFont.EMBEDDED
);
font = new Font(baseFont, 9);
} catch(DocumentException de) {
de.printStackTrace();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
public static ByteArrayOutputStream generatePDF() throws DocumentException {
Document doc = new Document();
ByteArrayOutputStream baosPDF = new ByteArrayOutputStream();
PdfWriter pdfWriter = PdfWriter.getInstance(doc, baosPDF);
try {
// create pdf
} catch(DocumentException de) {
baosPDF.reset();
throw de;
} finally {
if(doc != null) {
doc.close();
}
if(pdfWriter != null) {
pdfWriter.close();
}
}
return baosPDF;
}
}
Run Code Online (Sandbox Code Playgroud)
Eclipse没有发现任何错误.我已经测试了类,并且成功生成了PDF而没有错误.
为什么我能extend一个final时,我不应该能够在理论课?
(如果重要,我正在使用Java 7.)
小智 9
甲Class标记为final可以扩展另一个Class,然而final Class不能扩展.
这是一个例子:
这是允许的
public class Animal {
}
public final class Cat extends Animal {
}
Run Code Online (Sandbox Code Playgroud)
这是不容许
public final class Animal {
}
public class Cat extends Animal {
}
Run Code Online (Sandbox Code Playgroud)