?抽象類(abstract class)和接口(interface)有什么異同?
抽象類和接口都不能夠實例化,但可以定義抽象類和接口類型的引用。一個類如果繼承了某個抽象類或者實現了某個接口都需要對其中的抽象方法全部進行實現,否則該類仍然需要被聲明為抽象類。
接口比抽象類更加抽象,因為抽象類中可以定義構造器,可以有抽象方法和具體方法,而接口中不能定義構造器而且其中的方法全部都是抽象方法。抽象類中的成員可以是 private、默認、protected、public 的,而接口中的成員全都是 public 的。
抽象類中可以定義成員變量,而接口中定義的成員變量實際上都是常量。有抽象方法的類必須被聲明為抽象類,而抽象類未必要有抽象方法。
抽象的(abstract)方法是否可同時是靜態的(static),是否可同時是本地方法(native),是否可同時被 synchronized 修飾?
都不能。抽象方法需要子類重寫,而靜態的方法是無法被重寫的,因此二者
是矛盾的。本地方法是由本地代碼(如 C 代碼)實現的方法,而抽象方法是沒
有實現的,也是矛盾的。synchronized 和方法的實現細節有關,抽象方法不涉
及實現細節,因此也是相互矛盾的。
接口是否可繼承(extends)接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承具體類(concrete class)
接口可以繼承接口。
抽象類可以實現(implements)接口,抽象類可繼承具體類,但前提是具體類必須有明確的構造函數。
一個“.java”源文件中是否可以包含多個類(不是內部類)?有什么限制?
可以,但一個源文件中最多只能有一個公開類(public class)而且文件名必須和公開類的類名完全保持一致。
Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現接口?
可以繼承其他類或實現其他接口,在 Swing 編程中常用此方式來實現事件
監聽和回調。
內部類可以引用它的包含類(外部類)的成員嗎?有沒有什么限制?
一個內部類對象可以訪問創建它的外部類對象的成員,包括私有成員。
Java 中的 final 關鍵字有哪些用法?
-
(1)修飾類:表示該類不能被繼承;
-
(2)修飾方法:表示方法不能被重寫;
-
(3)修飾變量:表示變量只能一次賦值以后值不能被修改(常量)。
指出下面程序的運行結果
執行結果:1a2b2b。
創建對象時構造器的調用順序是:先初始化靜態成員,然后調用父類構造器,再初始化非靜態成員,最后調用自身構造器。