Lesson 3 上機練習題——繼承
課堂練習:
– 在包bzu.aa中定義一個交通工具類(Vehicle):
n 屬性——載客量(capacity)
n 方法
u 無參構造方法(給capacity初始化值爲2,並輸出“執行交通工具類的無參構造方法。”)
u 有參構造方法(傳參給capacity初始化,並輸出“執行交通工具的有參構造方法。”)
u capacity的set、get方法
u print方法:輸出capacity
– 在包bzu.aa中定義一個汽車類(Car)繼承交通工具類:
n 屬性——speed
n 方法
u 無參構造方法(給speed初始化值爲0,並輸出“執行汽車類的無參構造方法。”)
u 有參構造方法(用super關鍵字調用父類的有參構造方法,傳參給speed初始化,並輸出“執行汽車類的有參構造方法。”)
u 加速(speedup):speed+10並返回speed;
u 減速(speeddown):speed-15並返回speed;
u 重寫print方法:輸出speed和capacity。
– 在包bzu.bb中定義一個final的公交車類(Bus),繼承汽車類:
n 屬性——載客量(capacity)<變量隱藏>
n 方法
u 無參構造方法(給capacity初始化值爲20,並輸出“執行公交車類的無參構造方法。”)
u 有參構造方法(用super關鍵字調用父類的有參構造方法,傳參給capacity初始化,並輸出“執行公交車類的有參構造方法。”)
u 重寫print方法:輸出speed、 capacity及父類的capacity。
– 在包bzu.bb中編寫一個主類Test:
n 主函數
u 調用無參構造方法創建一個Car的對象car;調用加速方法將速度加至50,調用print方法;調用減速方法,將速度減至20,調用print方法。
u 調用有參構造方法創建一個Bus的對象bus;調用print方法。
Vehicle1類:
package javawork;
public class Vehicle1 {
int capacity;
Vehicle1()
{
capacity=2;
System.out.println("載客量:"+capacity);
}
Vehicle1(int capacity)
{
this.capacity=capacity;
System.out.println("載客量:"+capacity);
}
void setCapacity(int b)
{
capacity=b;
}
int getCapacity()
{
return capacity;
}
void print()
{
System.out.println("載客量:"+capacity);
}
}
Car類:
package javawork;
public class Car extends Vehicle1 {
int speed;
Car()
{
speed=0;
System.out.println("初始速度爲:"+speed);
}
Car(int capacity)
{
super(capacity);
//System.out.println("載客量爲:"+capacity);
}
int speedUp()
{
speed+=10;
return speed;
}
int speedDown()
{
speed-=15;
return speed;
}
void print()
{
System.out.println("速度:"+speed);
System.out.println("載客量:"+capacity);
}
}
bus類:
package javawork;
public class Bus extends Car{
Bus()
{
capacity=20;
System.out.println("載客量:"+capacity);
}
Bus(int capacity)
{
super(capacity);
//System.out.println("載客量:"+capacity);
}
void print()
{
System.out.println("速度:"+speed);
System.out.println("載客量:"+capacity);
System.out.println("父類載客量:"+super.capacity);
}
}
測試類:
package javawork;
public class Testbus {
public static void main(String[] args) {
System.out.print("汽車類測試:");
Car car=new Car();
System.out.print("加速後,");
while(car.speed<50)
car.speedUp();
car.print();
System.out.print("減速後,");
while(car.speed>20)
car.speedDown();
car.print();
System.out.print("公交車類測試:");
bus.print();
}
}
測試結果:
反思:
1測試類一定不要忘記寫主函數。
2類名的首字母使用大寫字母。類名最好容易識別、見名知意。當類名由幾個“單詞”複合而成時,每個單詞的首字母使用大寫。
3對象、變量或方法的名字除了符合標識符規定外,名字的首單詞的首字母使用小寫;如果變量或方法的名字由多個單詞組成,從第2個單詞開始的其它單詞的首字母使用大寫。
4提倡一行只聲明一個變量。
5
出現這種錯誤提示時是因爲沒有主函數。