Java是一種面向對象的編程語言,支持繼承這一面向對象的重要特性。在Java中,類之間可以通過繼承的方式模擬出現實中各種事物之間的關系。在繼承中,類與類之間分為父類和子類兩種,子類是從父類中繼承屬性和方法的,并且可以擁有屬于自己的屬性和方法。
然而,有的時候父類的某些屬性和方法并不希望被子類繼承,而是要讓它們保持獨立。在Java中,可以通過訪問修飾符來實現對屬性和方法的訪問控制,其中包括public、private、protected和default四種類型。其中被protected修飾的屬性和方法只能被本類和子類訪問,而外部類和同包的其他類不能訪問。
使用protected關鍵字定義的屬性和方法,本意是希望子類能夠繼承并使用它們。但是,在某些情況下,我們并不希望子類繼承這些屬性和方法。這時候,我們可以使用final關鍵字來防止繼承。final用于修飾類、屬性和方法,分別有不同的作用。
在類聲明中使用final關鍵字,表示該類不能被繼承。例如:
final class MyClass {
//類體
}
而如果在父類中,某個方法被final關鍵字修飾,那么子類不能重寫該方法。例如:
public class FatherClass {
public final void finalMethod(){//final method can't be overridden
//something here
}
}
public class SonClass extends FatherClass {
//The following code is not allowed
//public void finalMethod(){}
}
上述代碼中,父類FatherClass的finalMethod方法使用final關鍵字修飾,子類SonClass中不能重寫該方法。
最后要說明的是,final關鍵字本質上是為了防止修改被修飾對象的行為,因此在某些情況下,也可以用于修飾變量和參數。