javaSE练习13——(知识点:类的继承 方法的覆盖)
Posted itxiaobai-liujb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaSE练习13——(知识点:类的继承 方法的覆盖)相关的知识,希望对你有一定的参考价值。
设计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+"
颜色:"+this.color+"
速度:"+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+"
颜色:"+this.color+"
速度:"+this.speed+"
核载人数:"+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、测试类使用方法:鼠标移到测试方法处,点击鼠标右键,如下图所示:
以上是关于javaSE练习13——(知识点:类的继承 方法的覆盖)的主要内容,如果未能解决你的问题,请参考以下文章
JavaSE-22.1.2Lambda表达式练习:无参无返回值抽象方法