1. 程式人生 > >java實驗4

java實驗4

實驗名稱 第四次實驗:修飾符與繼承性  

一、實驗目的:

瞭解如何使用類及其成員的修飾符,理解類的繼承性,掌握方法的繼承、過載和覆蓋。

二、實驗要求

1. 編寫如何使用類及其成員的修飾符的程式。

2. 編寫如何通過傳遞引數來呼叫方法的程式。

3. 編寫體現類的繼承性(成員變數、成員方法的繼承)的程式。

三、實驗內容:

   (一)使用修飾符

有時需要公開一些變數和方法,有時需要禁止其他物件使用變數和方法,這時可以使用修飾符來實現這個目。常用的修飾符有:publicprivateprotectedpackagestaticfinalabstract等。

1. 程式功能:通過兩個類 StaticDemo

KY4_1 說明類變數與物件變數,以及類方法與物件方法的區別。

2. 編寫源程式 KY4_1.java,程式原始碼如下。

class StaticDemo {

static int x;

int y;

public static int getX() {

return x;

}

public static void setX(int newX) {

x = newX;

}

public int getY() {

return y;

}

public void setY(int newY) {

y = newY;

}

}

public class KY4_1 {

public static void main(String[] args) {

System.out.println("類變數x="+StaticDemo.getX());

System.out.println("物件變數y="+StaticDemo.getY());  

StaticDemo a= new StaticDemo();

StaticDemo b= new StaticDemo();

a.setX(1);

a.setY(2);

b.setX(3);

b.setY(4);

System.out.println("類變數a.x="+a.getX());

System.out.println("物件變數a.y="+a.getY());

System.out.println("類變數b.x="+b.getX());

System.out.println("物件變數b.y="+b.getY());

}

}

3. 編譯並執行程式 KY4_1.java,看看該程式是否有錯?如果有錯請在實驗報告中指出出錯的地方,出錯的原因,並給出修改意見以及程式正確執行的結果。

 該程式有出錯。

class StaticDemo {

static int x;

int y;

public static int getX() {

return x;

}

public static void setX(int newX) {

x = newX;

}

public int getY() {

return y;

}

public void setY(int newY) {

y = newY;

}

}

public class KY4_1 {

public static void main(String[] args) {

StaticDemo kk=new StaticDemo();

System.out.println("類變數x="+StaticDemo.getX());

System.out.println("物件變數y="+kk.getY());  

StaticDemo a= new StaticDemo();

StaticDemo b= new StaticDemo();

a.setX(1);

a.setY(2);

b.setX(3);

b.setY(4);

System.out.println("類變數a.x="+a.getX());

System.out.println("物件變數a.y="+a.getY());

System.out.println("類變數b.x="+b.getX());

System.out.println("物件變數b.y="+b.getY());

}

}


(二)方法中引數傳遞的練習

1. 編寫一個程式檔案KY4_2.java

2. 程式功能如下:有一個主方法main() 以及一個求平方和的方法int square(int x, int y)square方法計算引數x y的平方和,並返回該平方和值。在主方法main中定義兩個整型變數,並給它們賦一個初值,然後使用這兩個變數作為實際引數來呼叫square方法,求出平方和,最後輸出平方和。

3. 請將程式KY4_2.java的原始碼寫在實驗報告中。

public class KY4_2 {

int square(int x,int y){

int square;

square=x*x+y*y;

return square;

}

public static void main(String[] args) {

KY4_2 k=new KY4_2();

int a=1,b=2,c;

c=k.square(a, b);

System.out.println(c);

}

}

(三)類的繼承性練習

1. 進一步理解繼承的含義

    新類可從現有的類中產生,並保留現有類的成員變數和方法並可根據需要對它們加以修改。新類 還可新增新的變數和方法。這種現象就稱為類的繼承。

    當建立一個新類時,不必寫出全部成員變數和成員方法。只要簡單地宣告這個類是從一個已定義的類繼承下來的,就可以引用被繼承類的全部成員。被繼承的類稱為父類或超類(superclass),這個新類稱為子類。

Java 提供了一個龐大的類庫讓開發人員繼承和使用。設計這些類是出於公用的目的,因此,很少有某個類恰恰滿足你的需要。你必須設計自己的能處理實際問題的類,如果你設計的這個類僅僅實現了繼承,則和父類毫無兩樣。所以,通常要對子類進行擴充套件,即新增新的屬性和方法。這使得子類要比父類大,但更具特殊性,代表著一組更具體的物件。繼承的意義就在於此。

2.編寫兩個程式檔案KY4_3.javaKY4_4.java,實現類的繼承。

3KY4_3.java的程式碼如下:

        public class KY4_3 

        {

            protected String xm;                     //姓名

            protected int xh;                        //學號

            void setdata(String m,int h)              //該方法為姓名和學號賦初始值

            {

                xm =m;

                xh = h;

            }

            public void print()          //輸出學生的姓名和學號

            {

                System.out.println(xm+", "+xh);

            }

        }

    4.編譯 KY4_3.java,產生類檔案 KY4_3.class。注意:暫時不執行程式KY4_3.class

5.編寫一個程式檔案KY4_4.java。程式功能如下:子類KY4_4繼承父類 KY4_3,其不僅具有父類的成員變數 xm(姓名)、xh(學號),還定義了新的成員變數 xy(學院)、xi(系)。在子類KY4_4中重寫了父類的方法print(),在該方法中不僅輸出學生的姓名和學號,而且還輸出學生的學院和系。另外,在子類KY4_4中還定義了一個主方法main。首先,在主方法中建立一個父類 KY4_3的物件f,設定f的姓名為"帥零",學號為"12321",並且呼叫print()方法輸出物件f的姓名和學號。接著,在主方法中建立一個子類 KY4_4的物件s,設定s的姓名為"郭娜",學號為"12345",學院為"經濟管理學院",係為"資訊管理系",並且呼叫print()方法輸出物件s的姓名,學號,學院和系。

   6.編譯並執行程式KY4_4.java。請將KY4_4的源程式以及執行結果寫在實驗報告中。

注意:父類 KY4_3 與子類 KY4_4要在同一資料夾(路徑)內。

 public class KY4_4 extends KY4_3 {

protected String xy;

protected String xi;

public void print(){

System.out.println(xm);

System.out.println(xh);

System.out.println(xy);

System.out.println(xi);

}

public static void main(String[] args) {

KY4_3 f=new KY4_3();

f.setdata("帥零",12321);

f.print();

KY4_4 s=new KY4_4();

        s.setdata("郭娜", 12345);

        s.xy="經濟管理學院";

        s.xi="資訊管理系";

        s.print();

}

}

 

四、思考題

1. 說明類的繼承和多型都有什麼作用?

繼承就是子類繼承父類,使子類具有父類的各種屬性和方法,好處就是避免多餘的程式碼出現.多型就是一個介面,使用不同的例項去執行不同的操作,好處就是增強程式的可擴充套件性及可維護性.

四、心得體會:

通過本次實驗,明白了繼承與多型的作用以及該注意事項,更清晰的瞭解到了繼承與多型的使用.