1.final修飾符
有時候,你不希望別人坐享其成,通過繼承你寫的類得到他自己所需要的類,怎么辦呢?這個時候你就可以在你的class之前加上final這個修飾府,例如public final class test{……},加上了這個修飾符之后,別人在繼承這個類的話就會編譯出錯,提示他這個類不能構(gòu)建子類。從這我們可以看出,final修飾符和abstract修飾符是不能同時使用的,因為abstract類可以說是專門用來繼承的,而final類則不能用于繼承。那么如果是在方法的前面加上final修飾符有什么作用呢?比如說A類中有個聲明為final的方法a(){….},那么B繼承A的時候,B就不能覆蓋方法a(){….},否則編譯出錯,提示Cannot override the final method from A。此外,如果一個類聲明為final類的話,它里面所有的方法都自動成為final類型的。自然的,你肯定會問,如果一個域申明為final的時候有什么作用?一個屬性聲明為final之后,你不能在對它重新進行賦值,否則編譯報錯,The final field ×× cannot be assigned。另外,請注意,類聲明為final的時候,僅僅它的方法自動變?yōu)閒inal,而屬性則不會。
2.抽象類
抽象類的用處是十分大的,特別是對于OOP而言,關(guān)于抽象類,總結(jié)幾點:
a. 抽象類不能實例化,即不能對其用new運算符;
b. 類中如果有一個或多個abstract方法,則該類必須聲明為abstract;
c. 抽象類中的方法不一定都是abstract方法,它還可以包含一個或者多個具體的方法;
d. 即使一個類中不含抽象方法,它也可以聲明為抽象類;