1.文字闡述靜態代碼塊的做用。ide
靜態代碼塊在類加載的時候執行,並且只執行一次。函數
2.構造代碼塊與構造函數的調用順序如何?和方法的聲明位置是否有關?爲何?構造代碼塊的做用是什麼?this
(1)在main函數中建立new對象時,先 調用構造代碼快,然後再是構造函數spa
(2)構造代碼快和構造函數的調用順序和方法的聲明位置無關。orm
(3)構造代碼塊的做用:a.能夠存放多個構造方法的共同代碼,提高代碼的重複性;b.對成員變量初始化對象
3.類加載時,是否必定會執行靜態代碼塊?如何手動控制類加載?繼承
類加載時默認執行靜態代碼塊。
接口
手動控制類加載使用class.forName("classname"),默認加載類時,執行代碼塊。it
4.定義類Person,Man,Woman造成繼承關係class
class person{
}
class man extends person{
}
class woman extends person{
}
5.什麼是抽象方法?什麼是抽象類?抽象類是否有構造函數,是否能夠重載?
(1) 抽象方法是指沒有方法體的方法,用abstract修飾。
(2)含有抽象方法的類叫做抽象類,也必須用abstract修飾。
(3)抽象類能夠有構造函數,並且能夠被重載。
6.抽象修飾符有哪些非法組合?並給出合理的解釋?
abstract + static是非法組合,static修飾能更方便地訪問公共的屬性,而abstract的直接訪問沒有任何意義,由於抽象類中的方法是在子類中實現,就算訪問了也沒個啥東西。
abstract + final是非法組合,final修飾之後就不能被子類繼承,而abstract修飾後就是要讓子類實現其抽向方法,二者組合就矛盾了。
abstract + private是非法組合,抽象類方法的目的就是要讓子類來實例化,而private根本就沒有繼承一說,比final更加矛盾。
7.super和this做用以及用法以及注意事項?
this是指向對象自身的引用。
this(···)表示調用當前對象的帶有參數的構造函數,且只能用在第一行,默認當前對象的構造函數是this()
super是指向超類(即父類)對象的方法函數。
super(···)表示調用超類的帶有參數的構造函數,只能用在第一行,調用父類的默認構造函數是super()
8.定義接口
1.IWhite
2.IRich
3.IBeanti
4.定義類,實現以上三個接口.(WomenStar)
5.定義土豪類(EarchRicher.marring(...))
//定義包含三種屬性的白富美
(1)interface IWhite{
public void skinWhite();
}
(2) interface IRich{
public void FamilyRich();
}
(3) interface IBeauty{
public void faceBeauty();
}
//定義一個【白富美】的接口用以實現以上三個藉口。
(4)class womanStar implements IWhite, IRich, IBeauty{
}
(5)//定義土豪類(EarthRicher.marring(...))
//司機接口
interface IDriver{
public abstract void drive();
}
//女明星實現類---白富美中的典型
class WomanStar implements IWRB{//類型 WomanStar 必須實現繼承的抽象方法
//實現繼承的抽象方法
public void white(){
System.out.println("I'm white");
}
public void rich(){
System.out.println("I'm rich");
}
public void beauti(){
System.out.println("I'm Beauti");
}
}
//會開車的女明星
class WomanStarDriver extends WomanStar implements IDriver{//只要會開車就能夠,用接口--
// 類型 WomanStarDriver 必須實現繼承的抽象方法 IDriver.drive()
public void drive(){
System.out.println("老司機,上車啦!!");
}
}
//有錢人想徵婚類
class RichMan{
//成員方法,徵婚對象要白富美的女人
public void marry(IWRB woman){//徵婚對象時白富美的聊聊看
System.out.println("聊聊看!!!");
}
//要個開車的女司機
public void driver(IDriver driver){
driver.drive();//這個已經看明白了,建立司機對象 driver,調用司機方法.drive()
}
}
public class MarriyDemo1 {
public static void main(String[] args) {
RichMan rm=new RichMan();//建立一個富商
WomanStar star=new WomanStar();//建立一個女明星
rm.marry(star);//打印出--聊聊看---女明星star是實現了IWRB接口的類的對象
WomanStarDriver m2=new WomanStarDriver();
rm.marry(m2);//找會開車的女明星聊聊看看,也是實現了IWRB接口的類的對象
}
}