- Java面向對象軟件開發
- 姚駿屏 汪衛星主編
- 788字
- 2018-12-29 19:04:19
3.1.2 最終類
1.final類
有一種類是不能派生出子類的,我們稱這種類為最終類。即我們用final來修飾的類。在設計類時候,如果這個類不需要有子類,該類的實現細節不允許改變,并且確信這個類不會再被擴展,或者是為了特殊原因不讓其他開發人員繼承使用,那么就將該類設計為final類,比如Java提供的java.lang.String類。
2.final方法
如果一個類不允許其子類覆蓋某個方法,則可以把這個方法聲明為final方法。final方法不能被覆蓋,即子類的方法構型不能與父類的final方法構型相同。
【例3-2】 使用final方法的例子。
class Test1 {
public void f1() {
System.out.println("f1");
}
// 無法被子類覆蓋的方法
public final void f2(){
System.out.println("f2");
}
}
public class Test2 extends Test1{
public void f1() {
System.out.println("Test1父類方法f1被覆蓋!");
}
public static void main(String[] args) {
Test2 t = new Test2();
t.f1();
t.f2();// 調用從父類繼承過來的final方法
}
}
程序的運行結果如下:
Test1父類方法f1被覆蓋! f2
如上面的例子所示,如果與重寫f1()一樣來重寫f2(),則編譯器就會給出出錯信息。
特別提示:
final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,默認都是由final修飾的。
3.final變量(常量)
final變量實際上是Java語言的符號常量,可在定義時賦初值或在定義后的其他地方賦初值,但不能再次賦值。習慣上使用大寫的標識符表示final變量。例如:
final double PI=3.1416; final double G=9.18;
另外,final變量定義的時候,可以先聲明,而不給初值,這種變量也稱為final空白,空白final變量在對象初始化時必須被初始化。
工作分解-操作方案
(1)分析類及類結構;
(2)按照類圖編制出類框架;
(3)實現類方法;
(4)創建對象;
(5)調用對象中的方法完成具體功能。
工作實施
1.分析類及關系
2.定義抽象類Animal
類圖如圖3-1所示。

圖3-1 類圖
abstract class Animal{ private final String type; public String getType() { return type; } public abstract void sound();//抽象方法 public Animal(String type){//為空白final屬性賦初值 this.type = type; } }
3.Dog類利用構造方法為type屬性賦值
public Dog() {
super("狗");
}
4.Dog類實現Animal的sound()
public void sound() { System.out.print(type+"的叫聲是汪汪汪..."); }
5.main方法進行測試
public static void main(String args[]){ Dog d = new Dog(); d.sound(); }
6.完整源代碼
abstract class Animal{ private final String type; public String getType() { return type; } public abstract void sound(); public Animal(String type) { this.type = type; } } class Dog extends Animal{ public Dog() { super("狗"); } public void sound() { System.out.print(super.getType()+"的叫聲是汪汪汪..."); } }
程序運行結果:
狗的叫聲是汪汪汪...
推薦閱讀
- Vue 3移動Web開發與性能調優實戰
- Java應用與實戰
- 零基礎搭建量化投資系統:以Python為工具
- Production Ready OpenStack:Recipes for Successful Environments
- Blockly創意趣味編程
- Kotlin Standard Library Cookbook
- 深入淺出RxJS
- Learning Apache Mahout Classification
- Jupyter數據科學實戰
- 青少年信息學競賽
- HTML5從入門到精通(第4版)
- 計算機應用基礎教程(Windows 7+Office 2010)
- PHP與MySQL權威指南
- Scala編程實戰
- HTML+CSS+JavaScript網頁制作:從入門到精通(第4版)