11、面向對象的特征有哪些方面 12.java 創建對象的幾種方式 13.修飾符public,private,protected,以及不寫時的區別 14.String s = new String("xyz");創建了幾個String Object 15.Math.round(11.5)等於多少? ...
11、面向對象的特征有哪些方面
1.抽象: 抽象就是忽略一個主題中與當前目標無關的那些方面, 以便更充分地註意與當前目標有關的方面。 抽象並不打算瞭解全部問題,而只是選擇其中的一部分, 暫時不用部分細節。 抽象包括兩個方面, 一是過程抽象, 二是數據抽象。 2.繼承: 繼承是一種聯結類的層次模型, 並且允許和鼓勵類的重用, 它提供了一種明確表述共性的方法。 對象的一個新類可以從現有的類中派生, 這個過程稱為類繼承。 新類繼承了原始類的特性, 新類稱為原始類的派生類(子類), 而原始類稱為新類的基類(父類)。 派生類可以從它的基類那裡繼承方法和實例變數, 並且類可以修改或增加新的方法使之更適合特殊的需要。 3.封裝: 封裝是把過程和數據包圍起來, 對數據的訪問只能通過已定義的界面。 面向對象計算始於這個基本概念, 即現實世界可以被描繪成一系列完全自治、 封裝的對象, 這些對象通過一個受保護的介面訪問其他對象。 4. 多態性: 多態性是指允許不同類的對象對同一消息作出響應。 多態性包括參數化多態性和包含多態性。 多態性語言具有靈活、抽象、行為共用、代碼共用的優勢, 很好的解決了應用程式函數同名問題。
12.java 創建對象的幾種方式
採用new
通過反射
採用clone
通過序列化機制
前2者都需要顯式地調用構造方法。
造成耦合性最高的恰好是第一種,
因此你發現無論什麼框架,
只要涉及到解耦必先減少new的使用。
13.修飾符public,private,protected,以及不寫時的區別
修飾符 | 當前類 | 同一package | 子孫類 | 其他package |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
不寫時預設為friendly/default friendly許可權是java的預設許可權,也稱作包(package)訪問許可權 只要不加private、public、protect的 就是friendly訪問許可權, 所有的成員僅限同一個包內的成員訪問
14.String s = new String("xyz");創建了幾個String Object
兩個,一個字元對象,一個字元對象引用對象
15.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12; Math.round(-11.5)==-11; round方法返回與參數最接近的長整數, 參數加1/2後求其floor
16.Java有沒有goto?
java中的保留字,現在沒有在java中使用
17.Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型
方法的重寫Overriding和重載Overloading是Java多態性的不同表現。 重寫Overriding是父類與子類之間多態性的一種表現, 重載Overloading是一個類中多態性的一種表現。 如果在子類中定義某方法與其父類有相同的名稱和參數, 我們說該方法被重寫 (Overriding)。 子類的對象使用這個方法時, 將調用子類中的定義, 對它而言, 父類中的定義如同被"屏蔽"了。 如果在一個類中定義了多個同名的方法, 它們或有不同的參數個數或有不同的參數類型, 則稱為方法的重載(Overloading)。 Overloaded的方法是可以改變返回值的類型
18.abstract class和interface有什麼區別
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class), 它用於要創建一個體現某些基本行為的類, 併為該類聲明方法, 但不能在該類中實現該類的情況。 不能創建abstract 類的實例。 然而可以創建一個變數, 其類型是一個抽象類, 並讓它指向具體子類的一個實例。 不能有抽象構造函數或抽象靜態方法。 Abstract 類的子類為它們父類中的 所有抽象方法提供實現, 否則它們也是抽象類為。 取而代之,在子類中實現該方法。 知道其行為的其它類可以在類中實現這些方法 介面(interface)是抽象類的變體。 在介面中,所有方法都是抽象的。 多繼承性可通過實現這樣的介面而獲得。 介面中的所有方法都是抽象的, 沒有一個有程式體。 介面只可以定義static final成員變數。 介面的實現與子類相似, 除了該實現類不能從介面定義中繼承行為。 當類實現特殊介面時, 它定義(即將程式體給予)所有這種介面的方法。 然後,它可以在實現了該介面的類的 任何對象上調用介面的方法。 由於有抽象類, 它允許使用介面名作為引用變數的類型。 通常的動態聯編將生效。 引用可以轉換到介面類型或從介面類型轉換, instanceof 運算符可以用來 決定某對象的類是否實現了介面
19.介面是否可繼承介面?
介面可以繼承介面。 抽象類可以實現(implements)介面, 抽象類是否可繼承實體類,但 前提是實體類必須有明確的構造函數
20.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
swtich()裡面必須是int和enum--即枚舉類型。 short、 char 或者 byte他會自動轉換為int的。。 long不能自動轉換為int.. 因為long比int範圍大..可能會丟失精度.. 在java的1.7之後的jdk版本, java中的switch裡面表達式的類型可以是string類型, 之前是不可以使用的