01-撩課-Java面試寶典-第二篇
阿新 • • 發佈:2018-11-09
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型別,
之前是不可以使用的