設計2個類,要求如下: (知識點:類的繼承 方法的覆蓋)1、定義一個汽車類Vehicle, 1.1 屬性包括:汽車品牌brand(String類型)、顏色color(String類型 )和速度speed(double類型)。 1.2 至少提供一個有參的構造方法(要求品牌和顏色可以初始化為任意值 ,但 ...
設計2個類,要求如下: (知識點:類的繼承 方法的覆蓋)
1、定義一個汽車類Vehicle,
1.1 屬性包括:汽車品牌brand(String類型)、顏色color(String類型
)和速度speed(double類型)。
1.2 至少提供一個有參的構造方法(要求品牌和顏色可以初始化為任意值
,但速度的初始值必須為0)。
1.3 為屬性提供訪問器方法。註意:汽車品牌一旦初始化之後不能修改。
1.4 定義一個一般方法run(),用列印語句描述汽車奔跑的功能
1.5 在main方法中創建一個品牌為“benz”、顏色為“black”的汽車。
2 、定義一個Vehicle類的子類轎車類Car,要求如下:
2.1 轎車有自己的屬性載人數loader(int 類型)。
2.2 提供該類初始化屬性的構造方法。
2.3 重新定義run(),用列印語句描述轎車奔跑的功能。
2.4 在main方法中創建一個品牌為“Honda”、顏色為“red”,載人數為2
人的轎車。
Vehicle.java
package lianxi;
public class Vehicle {
// 屬性
public String brand;
public String color;
public Double speed = 0.0;
// set() 和 get()方法
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Double getSpeed() {
return speed;
}
public void setSpeed(Double speed) {
this.speed = speed;
}
// 無參構造方法
public Vehicle() {
super();
}
// 有參構造方法
public void Vehicle(String brand, String color) {
this.brand = brand;
this.color = color;
}
public void Vehicle(String brand, String color, Double speed) {
this.brand = brand;
this.color = color;
this.speed = speed;
}
// 重寫
@Override
public String toString() {
return "Vehicle [brand=" + brand + ", color=" + color + ", speed=" + speed + "]";
}
// 用列印語句描述汽車奔跑的功能
public void run() {
System.out.println("汽車品牌:"+this.brand+"\n顏色:"+this.color+"\n速度:"+this.speed);
}
}
Car.java
package lianxi;
public class Car extends Vehicle{
// 屬性
public Integer loader;
// set() 和 get()方法
public Integer getLoader() {
return loader;
}
public void setLoader(Integer loader) {
this.loader = loader;
}
// 無參構造方法
public Car() {
super();
}
// 有參構造方法
public void Car(String brand, String color, Double speed,Integer loader) {
this.brand = brand;
this.color = color;
this.speed = speed;
this.loader = loader;
}
// 重寫
/*
* 重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!
* 重寫的好處在於子類可以根據需要,定義特定於自己的行為。 也就是說子類能夠根據需要實現父類的方法。
* 重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常。
* 例如: 父類的一個方法申明瞭一個檢查異常 IOException,但是在重寫這個方法的時候不能拋出 Exception 異常,
* 因為 Exception 是 IOException 的父類,只能拋出 IOException 的子類異常。
* */
@Override
public String toString() {
return "Car [loader=" + loader + "]";
}
// 用列印語句描述轎車奔跑的功能
public void run() {
System.out.println("汽車品牌:"+this.brand+"\n顏色:"+this.color+"\n速度:"+this.speed+"\n核載人數:"+this.loader);
}
}
RunTest.java
package lianxi;
import org.junit.Test;
public class RunTest {
@Test
public void runTest() {
Vehicle ve = new Vehicle();
ve.Vehicle("benz","black");
ve.run();
ve.Vehicle("benz","black",300.0);
ve.run();
}
@Test
public void runTest2() {
Car ca = new Car();
ca.Car("Honda","red",300.0,2);
ca.run();
}
}
備註:1、我不是用main()方法來創建一個品牌為“benz”、顏色為“black”的汽車 和 創建一個品牌為“Honda”、顏色為“red”,載人數為2人的轎車的;
我是用測試類來創建的。
2、測試類使用方法:滑鼠移到測試方法處,點擊滑鼠右鍵,如下圖所示: