1.文字闡述靜態代碼塊的作用。
靜態代碼塊在類加載的時候執行,而且只執行一次。
2.構造代碼塊與構造函數的調用順序如何?和方法的聲明位置是否有關?爲什麼?構造代碼塊的作用是什麼?
構造代碼塊調用順序優先於構造方法,和方法的聲明位置無關。
構造代碼塊作用:a.可以存放多個構造方法的共同代碼,提升代碼的重複性
b.對成員變量初始化
3.類加載時,是否一定會執行靜態代碼塊?如何手動控制類加載?
類加載時默認執行靜態代碼塊。
手動控制類加載使用Class.forName("classname"),默認加載類時,執行代碼塊。
4.定義類Person,Man,Woman形成繼承關係。
class Persion {
}
class Man extends Persion {
}
class Woman extends Persion {
}
5.什麼是抽象方法?什麼是抽象類?抽象類是否有構造函數,是否可以重載?
抽象方法:沒有方法體的方法。必須使用abstract修飾。
抽象類:含有抽象方法的類,就是抽象類,抽象類也必須要使用abstract修飾。
抽象類有構造函數,並且可以被重寫
6.抽象修飾符有哪些非法組合?並給出合理的解釋?
abstract + static 是非法的修飾符組合。static修飾可以更方便的訪問公共的屬性,抽象的直接訪問時沒有任何意義的
abstract + final 是非法的修飾符組合。final修飾的就是最終的,不能更改,抽象需要去實例化的,需要操作
abstract + private是非法的修飾符組合。抽象類需要子類繼承來實例化,私有是不能繼承的
7.super和this作用以及用法以及注意事項?
super : 超類,作用方面類似於this.
super(...) : 訪問超類的構造函數.只能用在第一行。默認是super();
this:指向對象自身的引用。
this(...)表示的是調用當前類的構造函數.只能用在第一行。默認this();
8.定義接口
(1)IWhite
(2)IRich
(3)IBeanty
(4)定義類,實現以上三個接口.(WomenStar)
(5)定義土豪類(EarchRicher.marring(...))
interface Iwhite {
public void skinWhite();
}
interface IRich {
public void walletRich();
}
interface IBeauty {
public void faceBeauty();
}
interface WhiteRichBeauty extends Iwhite, IRich, IBeauty {
}
class RichMan {
public void marry(WhiteRichBeauty woman) {
System.out.println("Find Love!");
}
}
class RichManDemo {
public static void main(String[] args) {
WhiteRichBeauty womanStar = new WhiteRichBeauty() {
public void skinWhite() {
}
public void walletRich() {
}
public void faceBeauty() {
}
};
RichMan man = new RichMan();
man.marry(womanStar);
}
}