程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA中阻攔類的繼續(官方和非官方)

JAVA中阻攔類的繼續(官方和非官方)

編輯:關於JAVA

JAVA中阻攔類的繼續(官方和非官方)。本站提示廣大學習愛好者:(JAVA中阻攔類的繼續(官方和非官方))文章只能為提供參考,不一定能成為您想要的結果。以下是JAVA中阻攔類的繼續(官方和非官方)正文


官方方法

JAVA說話供給的一個症結字“FINAL”可以用來實行該義務。看看上面的源代碼典范:


//FinalDemo.java
public final class FinalDemo {
}

    上面讓我們來制造另外一個類,它將會繼續下面聲明的類。JAVA說話供給的“EXTENDS”症結字將可以或許使得一個類繼續於一個現有的類。


//FinalDemo2.java
public class FinalDemo2 extends FinalDemo {
}  

在編譯第一個類後,假如你接著編譯第二個類,那末JDK編譯器報錯,你會獲得以下毛病信息:

FinalDemo2.java:1: cannot inherit from final FinalDemo
public class FinalDemo2 extends FinalDemo{}
                                ^
1 error


如今,你曾經經由過程官方方法來勝利阻攔了第一個類被另外一個類所繼續。

非官方方法

    然則,阻攔類被其他類所繼續的方法也不是獨一的。斟酌上面的代碼,我聲清楚明了結構辦法為公有(private)的, 並且也聲清楚明了一個靜態辦法(static method)來前往一個類對象。


public class PrivateTest{
        private PrivateTest(){
                System.out.println("Private Default Constructor");
        }
        public static PrivateTest getInstance(){
                return new PrivateTest();
        }
}

    下面被修正的代碼被稱為是"Singleton形式," 一個getInstance辦法老是只前往這個類的一個實例。 然則為何這段代碼阻攔了類被繼續呢?斟酌上面的代碼,聲明的類應當能繼續下面的類。

public class PrivateTest2 extends PrivateTest{


}


在編譯第一個類後,假如你接著編譯第二個類,那末JDK編譯器報錯,你會獲得以下毛病信息:

PrivateTest2.java:1: PrivateTest() has private access in PrivateTest
public class PrivateTest2 extends PrivateTest{
       ^
1 error


    第二個類不克不及繼續第一個類。 然則提醒毛病的意思是甚麼呢? JAVA說話請求在一個類中至多要供給一個構件辦法。 假如你沒有供給任何構件辦法, JDK將會在你聲明的類中拔出一個默許的構件辦法。 換句話說,默許的是一個不帶參數,空構件體,和一個公共(public)拜訪權限的構件辦法。 然則,假如你本身界說了一個構件辦法, 那末JDK編譯器就不會拔出這麼默許的構件辦法。我們適才在PrivateTest類中聲清楚明了一個默許的構件辦法,然則我們將默許的public拜訪權限改成了private權限,這些都是相符JDK編譯器語法檢討的規矩的。 

    如今我們來看看第二個部分。JAVA說話也請求你必需在構件辦法裡的第一行來挪用(call)超類(super class)的構件辦法。 這個是啟動繼續特點所必需的。 在JAVA中,我們經由過程挪用super()這個辦法來完成這個義務,它將會映照到一個超類的構件辦法中。 假如你沒有給超類供給一個默許的結構辦法,那末JDK編譯器將會拔出一個默許的超類構件辦法用來挪用。

    我們適才在第一個類中將結構器聲明為private的權限。如今,當我們在其他類中繼續這個類的時刻,編譯器將會測驗考試挪用一個默許的超類構件辦法。由於超類規模內的構件辦法是聲明為private權限的, 編譯器將報錯,說不克不及挪用超類構件辦法。是以,我們經由過程非官方方法阻攔了一個類被其他類所繼續。

Usman Saleem
Mohammad Ali Jinnah University
E-mail: [email protected] 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved