目录
创建接口
BrakBehavior.java
package interfaces;
public interface BrakeBehavior {
public void stop();
default void hello() {
System.out.println("Hello from BrakeBehavior");
}
static void bye() {
System.out.println("Bye from BrakeBehavior");
}
}
创建抽象类
Car.java
package abstracts;
import interfaces.BrakeBehavior;
public abstract class Car {
public BrakeBehavior wheel;
public void brake(){
wheel.stop();
}
}
创建实体类
LongWheelBrake.java
package util;
import interfaces.BrakeBehavior;
public class LongWheelBrake implements BrakeBehavior {
@Override
public void stop() {
System.out.println("模拟长轮胎刹痕迹");
}
@Override
public void hello() {
System.out.println("hello 我是长刹");
}
}
ShortWheelBrake.java
package util;
import interfaces.BrakeBehavior;
public class ShortWheelBrake implements BrakeBehavior {
@Override
public void stop() {
System.out.println("模拟短轮胎刹痕迹");
}
@Override
public void hello() {
System.out.println("hello 我是短刹");
}
}
ShortWheelCar.java
package util;
import abstracts.Car;
import interfaces.BrakeBehavior;
public class ShortWheelCar extends Car {
public ShortWheelCar(BrakeBehavior brakeBehavior) {
wheel = brakeBehavior;
}
}
创建测试类
StrategyTest.java
import interfaces.BrakeBehavior;
import util.ShortWheelBrake;
import util.ShortWheelCar;
public class StrategyTest {
public static void main(String[] args) {
BrakeBehavior brake = new ShortWheelBrake();
ShortWheelCar car1 = new ShortWheelCar(brake);
car1.brake();
}
}
总结
实现接口
- 可以直接写方法,不写方法体,但default+static 要写方法体
- 就需要重写 public 方法,
- 换成 default 关键词就可以选择性重写,
- 换成 static 静态方法不能重写这个方法
继承抽象
- 可以直接写抽象方法不写方法体,不加 abstract 关键词的方法就会报错,除非加上方法体
- 不用重写普通方法
- 但是必须重写抽象方法
感谢观看