运用 Java 接口,在接口中声明 方法,对象实现接口中 抽象方法。
我们计划设计一个机动车管理系统,请设计类及接口 ,类之间的关系及接口如下:
类之间关系:
机车类:
属性:品牌、价格
行为:运行
接口: GPS 导航功能。
宝马车具有 GPS 导航功能。
机车类代码:
public abstract class Vehicle {
// 机动车属性: 品牌、价格
private String brand;
private String price;
// 车辆信息展示
public void showInfo(){
System.out.println("品牌:" + brand + "价格:" + price);
}
// 行为: 运行
public abstract void driver();
// 无参构造
public Vehicle() {
}
// 有参构造
public Vehicle(String brand, String price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
汽车类代码:
public class JavaTeacher extends Staff{
// 无参构造
public JavaTeacher() {
}
// 全参构造
public JavaTeacher(String name, String sex, int age) {
super(name, sex, age);
}
// 工作方法
@Override
public void work() {
System.out.println("java 讲师正在授课\n");
}
}
摩托车类代码:
public class UITeacher extends Staff implements Draw{
// 无参构造
public UITeacher() {
}
// 全参构造
public UITeacher(String name, String sex, int age) {
super(name, sex, age);
}
// 重写工作方法
@Override
public void work() {
System.out.println("UI 讲师正在授课");
}
// 实现绘画方法
@Override
public void draw() {
System.out.println("UI 讲师正在绘画\n");
}
}
奔驰车类代码:
public class Benz extends Car{
// 无参构造
public Benz() {
}
// 全参构造
public Benz(String brand, String price) {
super(brand, price);
}
// 重写运行方法
@Override
public void driver() {
super.driver();
System.out.println("奔驰启动...");
}
}
宝马车类代码:
public class BMW extends Car implements GPS {
// 无参构造
public BMW() {
}
// 全参构造
public BMW(String brand, String price) {
super(brand, price);
}
@Override
public void driver() {
super.driver();
System.out.println("宝马运行...");
}
@Override
public void gps() {
System.out.println("开始导航...");
}
}
雅马哈摩托代码:
public class YMH extends Motor{
// 无参构造
public YMH() {
}
// 全参构造
public YMH(String brand, String price) {
super(brand, price);
}
@Override
public void driver() {
super.driver();
System.out.println("雅马哈摩托运行...");
}
}
宝马摩托代码:
public class BMotor extends Motor {
// 无参构造
public BMotor() {
}
// 全参构造
public BMotor(String brand, String price) {
super(brand, price);
}
@Override
public void driver() {
super.driver();
System.out.println("宝马摩托运行...");
}
}
测试类代码:
public class TestDmeo {
public static void main(String[] args) {
System.out.println("嗨客网(www.haicoder.net)\n");
Benz bz = new Benz("奔驰","100000");
bz.showInfo();
bz.driver();
System.out.println("");
BMW bm = new BMW("宝马","2000000");
bm.showInfo();
bm.gps();
bm.driver();
System.out.println("");
YMH ymh = new YMH("雅马哈","10000");
ymh.showInfo();
ymh.driver();
System.out.println("");
BMotor bmotor = new BMotor("宝马摩托","20000");
bmotor.showInfo();
bmotor.driver();
}
}
运行结果如下图:
以上案例运用 Java 抽象类抽取共性内容,子类 继承 父类,重写运行方法,接口实现 GPS 导航方法,宝马车实现导航功能。