题目:2、设计一个系统:
XXX门的实现过程:
流程:
设计一个抽象类,描述门Door,那么对于这张门来说,就应该拥有所有门的共性,开门openDoor()和关门closeDoor();然后对不同种类的门进行额外的功能设计,例如防盗--theftproof()、防水--waterproof()、防弹--bulletproof()、防火、防锈……
要求:利用继承、抽象类知识设计该门
重点是:instance的使用方法
instanceof——判断某个对象是否是某个类或者某个类的子类的对象
第一步还是写一个抽象方法:Door 有开门关门两个抽象方法
public abstract class Door {
public abstract void closeDoor();
//方法名小写字母开头,其余单词大写开头剩下小写 userName,
public abstract void openDoor();
}
定义多个子类继承父类
Test类
public class Test {
public static void main(String args[]) {
Door t = new TheftproofDoor();
openClose(t);
Door w = new WaterproofDoor();
openClose(w);
Door b = new Bulletproof();
openClose(b);
}
/*
* 开门关门
*/
public static void openClose(Door d) {
d.openDoor();
d.closeDoor();
if (d instanceof TheftproofDoor) {
TheftproofDoor t = (TheftproofDoor) d;
t.theftproof();
} else if (d instanceof WaterproofDoor) {
WaterproofDoor w = (WaterproofDoor) d;
w.waterproof();
} else if (d instanceof Bulletproof) {
Bulletproof b = (Bulletproof) d;
b.bulletproof();
}
}
}
instanceof语句在重写toString方法中也经常使用
防盗门:
public class TheftproofDoor extends Door{
//构造方法
public TheftproofDoor() {
}
@Override
public void openDoor() {
System.out.println("防盗门开门");
}
@Override
public void closeDoor() {
System.out.println("防盗门关门");
}
public void theftproof(){
System.out.println("防盗功能...");
}
}
防水门:
public class WaterproofDoor extends Door{
public WaterproofDoor() {
}
@Override
public void openDoor() {
System.out.println("防水门开门");
}
@Override
public void closeDoor() {
System.out.println("防水门关门");
}
public void waterproof(){
System.out.println("防水功能。。。");
}
}
防弹门
public class Bulletproof extends Door{
public Bulletproof() {
}
@Override
public void openDoor() {
System.out.println("防弹门开门");
}
@Override
public void closeDoor() {
System.out.println("防弹门关门");
}
public void bulletproof(){
System.out.println("防弹功能。。。");
}
}