1.瞭解如何使用類及其成員的修飾符,理解類的繼承性,掌握方法的繼承、重載和覆蓋。
二、實驗環境:
Eclipce
三、實驗內容:
(一)修飾符
1.編寫源程序KY4_1.java,通過兩個類StaticDome、KY4_1來說明類變量和與對象變量,以及類方法和對
象方法的區別。源代碼如下:
package ch4;
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());
}
}
程序出錯,對面的實例變量和實例方法不能直接通過類名訪問,要使程序能正確運行可刪除代碼行System.out.println("對象變量y="+StaticDemo.getY());或者將StaticDemo類中的實例變量和實例方法都加上修飾詞static使它們成爲類變量和類方法,程序正確運行結果截圖:
(二)方法中參數傳遞的練習
1.編寫一個程序文件KY4_2.java。程序功能如下:有一個主方法main() 以及一個求平方和的方法int
square(int x, int y)。square方法計算參數x 和y的平方和,並返回該平方和值。在主方法main
中定義兩個整型變量,並給它們賦一個初值,然後使用這兩個變量作爲實際參數來調用square方法,
求出平方和,最後輸出平方和。
程序源代碼:
package ch4;
public class KY4_2 {
static int square(int x,int y){
return (x*x+y*y);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int x;
int y;
x=3;
y=4;
System.out.println(square(x,y));
}
}
程序運行結果截圖:
(三)類的繼承性練習
1.編寫兩個程序文件KY4_3.java和KY4_4.java,實現類的繼承。KY4_3定義成員變量xm(姓名),xh(學號),定義方法print()輸出姓名和學號。子類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的姓名,學號,學院和系。
程序源代碼:
KY4_3.java:
package ch4;
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);
}
}
KY4_4.java:
package ch4;
public class KY4_4 extends KY4_3{
String xy;
String xi;
public void print(){
System.out.println(xm+", "+xh+", "+xy+", "+xi);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
KY4_3 f=new KY4_3();
KY4_4 s=new KY4_4();
f.xm="帥零";
f.xh=12321;
f.print();
s.xm="郭娜";
s.xh=12345;
s.xy="經濟管理學院";
s.xi="信息管理系";
s.print();
}
}
程序運行結果截圖:
(四)思考題:說明類的繼承和多態都有什麼作用?
答:繼承可以減少代碼的書寫量,實現代碼複用,子類可以在已有的基礎上進行修改和擴展從而實現 的特定功能;多態性就是指父類的某個方法被其子類重寫時,可以各自產生自己的功能行爲,多態的作用就是消除類型之間的耦合耦合關係。
四、心得體會:
用static修飾的變量稱爲類變量,當類中有類變量時,同new運算符創建的多個對象共享這個變量,且可以通過類名直接訪問這個變量,用static修飾的方法稱爲類方法,在類方法被加載到內存時就分配的相應的入口地址,從而類方法可以被類創建的任何對象調用執行,也可以通過類名調用。如果一個子類繼承了父類,若他們在一個包中,子類就可以調用父類中不是private的成員變量和方法,同時子類還能在繼承的基礎上進行擴展,新增自己的變量和方法,也可以重寫從父類繼承的方法。