1、题目
设计一个汽车类Auto,其中包含一个表示速度的double型的成员变量speed、表示启动的start()方法、表示加速的speedUp()方法以及表示停止的stop()方法;在设计一个Auto类的子类Bus表示公共汽车,重写start()和stop()方法,另外定义两个方法gotOn()和gotOff()表示乘客上车和下车;
2、代码内容
汽车类Auto
package com.hzcollege.car;
/**
* 汽车类
*
* @author hhh
* @version 1.8.0
*/
public abstract class Auto {
/**
* 速度
*/
private double speed;
/**
* getSpeed
* @return 速度
*/
public double getSpeed() {
return speed;
}
/**
* setSpeed
* @param speed
*/
public void setSpeed(double speed) {
this.speed = speed;
}
/**
* start
* 抽象方法,表示启动
*/
public abstract void start();
/**
* speedUp
* 表示加速度
*/
public void speedUp() {
System.out.println("Auto类speedUp方法");
}
/**
* stop
* 表示停止
*/
public void stop(){
System.out.println("Auto类的stop方法");
}
}
公共汽车类Bus
package com.hzcollege.car;
/**
* 公共汽车类
*
* @author hhh
* @version 1.8.0
*/
public class Bus extends Auto{
/**
* start
* 重写了父类Auto的start方法,表示启动
*/
@Override
public void start() {
System.out.println("重写了父类Auto的start方法");
}
/**
* stop
* 重写了父类Auto的stop方法,表示停止
*/
@Override
public void stop() {
//使用super关键字调用父类的stop方法
super.stop();
System.out.println("重写了父类Auto的stop方法");
}
/**
* gotOn
* 表示乘客上车
*/
public void gotOn() {
System.out.println("Bus类gotOn方法");
}
/**
* gotOff
* 表示乘客下车
*/
public void gotOff() {
System.out.println("Bus类gotOff方法");
}
}
测试类
package com.hzcollege;
import com.hzcollege.car.Auto;
import com.hzcollege.car.Bus;
public class Demo {
public static void main(String[] args) {
//多态定义实例,父类实例指向子类空间
Auto auto = new Bus();
//父类实例调用子类继承和重写的方法
auto.setSpeed(10);
System.out.println("speed = "+auto.getSpeed());
auto.start();
auto.speedUp();
auto.stop();
//强制类型转换,父类实例转换成子类实例
Bus bus = (Bus)auto;
//子类实例调用子类自己的方法
bus.gotOn();
bus.gotOff();
}
}
3、运行结果
4、总结
通过这次试验掌握了如何定义抽象类,子类的继承性和多态的使用,super关键字的使用
子类继承抽象父类需要重写父类的抽象方法,多态的使用可以总结为,父类指向子类对象,子类重写父类方法
父类实例想要强制转换成子类实例必须是这个父类实例指向子类实例,而子类实例可以自动转换成父类实例