【正文】
指導教師評語 該生外文翻譯的內容與課題研究方向所涉及的技術,基本一致,翻譯的基本準確,字數達到開題中對外文文獻的要求,格式比較規(guī)范。但是對于它們的選擇卻又往往反映出對于問題領域中的概 念本質的理解、對于設計意圖的反映是否正確、合理,因為它們表現了概念間的不同的關系(雖然都能夠實現需求的功能)。 7. 接口中的方法默認都是 public abstract 類型的。 5. 接口中定義的變量默認是 public static final 型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。抽象類中可以有非抽象方法。其實 abstract class 表示的是isa關系, interface 表示的是 likea關系。 2. 在 abstract class 中可以有自己的數據成員,也可以有非 abstract 的成員方法,而在interface 中,只能夠有靜態(tài)的不能被修改的數據成員(也就是必須是 static final的,不過在 interface 中一般不定義數據成員),所有的成員方法都是 abstract 的。 小結 1. abstract class 在 Java 語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。 這種實現方式基本上能夠明確的反映出我們對于問題領域的理解,正確的揭示我們的設計意圖。所以對于 Door 這個概念,我們應該使用 abstract class 方式來定義。 如果我們對于問題領域的理解是: AlarmDoor 在概念本質上 是 Door,同時它有具有報警的功能。我們一一來分析、說明。 顯然,由于 Java 語言不支持多重繼承,所以兩個概念都使 用 abstract class 方式定義是不可行的。 既然 open、 close 和 alarm 屬于兩個不同的概念,根據 ISP 原則應該把它們分別定義在代表這兩個概念的抽象類中。 這種方法違反了面向對象設計中的一個核心原 則 ISP(Interface Segregation Principle),在 Door 的定義中把 Door 概念本身固有的行為方法和另外一個概念 報警器 的行為方法混在了一起。 如果現在要求 Door 還要具有報警的功能。 其他具體 的 Door 類型可以 extends 使用 abstract class 方式定義的 Door 或者implements 使用 interface 方式定義的 Door。為了使論述便于理解,下面將通過一個簡單的實例進行說明。 前面已經提到過, abstract class 在 Java 語言中體現了一種繼承關系,要想使得繼承關系合理,父類和派生類之間必須存在 isa關系,即父類和派生類在概念本質上應該是相同的。 本小節(jié)將從另一個層面: abstract class 和interface 所反映出的設計理念,來分析一下二者的區(qū)別。因此,在 abstract class 和 interface 間進行選擇時要非常的小心。但是如果界面是通 過 abstract class 來實現的,那么可能就只需要修改定義在 abstract class 中的默認行為就可以了。 在抽象類中不能定義默認行為還存在另一個比較嚴重的問題,那就是可能會造成維護上的麻煩。 其次,在 abstract class 的定義中,我們可以賦予方法的默認行為。但是,一個類卻可以實現多個interface。但是在具體的使用上面還是有一些區(qū)別的。從某種意義上說, interface 是一種特殊形式的 abstract class。 從語法定義層面看 abstract class 和 interface 在語法層面, Java 語言對于 abstract class 和 interface 給出了不同的定義方式,下面以定義一個名為 Demo 的抽象類為例來說明這種不同。由于模塊依賴于一個固定的抽象體,因此它可以是不允許修改的;同時,通過從這個抽象體派生,也可擴展此模塊的行為功能。這個抽象描述就是抽象類,而這一組任意個可能的具體實現則表現為所有可能的派生類。 在面向對象領域,抽象類主要用來進行類型隱藏。比如:如果我們進行一個圖形編輯軟件的開發(fā),就會發(fā)現問題領域存在著圓、三角形這樣一些具體概念,它們是不同的,但是它們又都屬于形狀這樣一個概念,形狀這個概念在問題領域是不存在的,它就是一個抽象概念。并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。本文將對它們之間的區(qū)別進行一番剖析,試圖給開發(fā)者提供一個在二者之間進行選擇的依據。 abstract class 和 interface之間在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換,因此很多開發(fā)者在進 行抽象類定義時對于 abstract class 和 interface 的選擇顯得比較隨意。t change their values. 6. Class abstraction of variable default is cut type, the value that can be in subclasses redefined, ok also and new assignment. 7. Interface of the method are public default, abstract type. Conclusion Abstract class and with is Java language of two kinds of definition nonabstract class way, there are a great similarities. But for their choice but again often reflects on issues in the field of generalized read essence of understanding, to reflect the design intent is correct and reasonable, whether because they show the concept between different relation (although can realize the function demand). This is actually a kind of language of usage, like the reader friend can finely experience. 詳細解析 Java 中抽象類和接口的區(qū)別 在 Java 語言中, abstract class 和 interface 是支持抽象類定義的兩種機制。s understanding, whether for design intent reflect the correct and reasonable. We are a result analysis and description. If the two concepts are used with ways to define, then reflects two problems: 1, we may not understand clearly problem domain, AlarmDoor in concept essentially exactly is held or alarm? 2, if we in problem field un