java基礎第五天

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接口的類的對象

}

}

相關文章
相關標籤/搜索