是否可以在Java中扩展最终类?

sil*_*ver 1 java inheritance extends final

可能重复:

该线程不询问如何扩展final类.它问 为什么声明的类final可能会扩展另一个类.


这个线程:

final类是仅仅是一个类不能扩展.

但是,我有一个我声明的辅助类finalextends另一个类:

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)