diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java new file mode 100644 index 0000000000..438ecad140 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java @@ -0,0 +1,18 @@ +package com.baeldung.defaultstaticinterfacemethods.application; + +import com.baeldung.defaultstaticinterfacemethods.model.Car; +import com.baeldung.defaultstaticinterfacemethods.model.Vehicle; + +public class Application { + + public static void main(String[] args) { + + Vehicle car = new Car("BMW"); + System.out.println(car.getBrand()); + System.out.println(car.speedUp()); + System.out.println(car.slowDown()); + System.out.println(car.turnAlarmOn()); + System.out.println(car.turnAlarmOff()); + System.out.println(Vehicle.getHorsePower(2500, 480)); + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java new file mode 100644 index 0000000000..52ec2c3c15 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java @@ -0,0 +1,12 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public interface Alarm { + + default String turnAlarmOn() { + return "Turning the alarm on."; + } + + default String turnAlarmOff() { + return "Turning the alarm off."; + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java new file mode 100644 index 0000000000..6ec6507e59 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java @@ -0,0 +1,25 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public class Car implements Vehicle { + + private final String brand; + + public Car(String brand) { + this.brand = brand; + } + + @Override + public String getBrand() { + return brand; + } + + @Override + public String speedUp() { + return "The car is speeding up."; + } + + @Override + public String slowDown() { + return "The car is slowing down."; + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java new file mode 100644 index 0000000000..b1de93059a --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java @@ -0,0 +1,25 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public class Motorbike implements Vehicle { + + private final String brand; + + public Motorbike(String brand) { + this.brand = brand; + } + + @Override + public String getBrand() { + return brand; + } + + @Override + public String speedUp() { + return "The motorbike is speeding up."; + } + + @Override + public String slowDown() { + return "The motorbike is slowing down."; + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java new file mode 100644 index 0000000000..abf329fafd --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java @@ -0,0 +1,35 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public class MultiAlarmCar implements Vehicle, Alarm { + + private final String brand; + + public MultiAlarmCar(String brand) { + this.brand = brand; + } + + @Override + public String getBrand() { + return brand; + } + + @Override + public String speedUp() { + return "The motorbike is speeding up."; + } + + @Override + public String slowDown() { + return "The mootorbike is slowing down."; + } + + @Override + public String turnAlarmOn() { + return Vehicle.super.turnAlarmOn() + " " + Alarm.super.turnAlarmOn(); + } + + @Override + public String turnAlarmOff() { + return Vehicle.super.turnAlarmOff() + " " + Alarm.super.turnAlarmOff(); + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java new file mode 100644 index 0000000000..b0bdd63c2c --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java @@ -0,0 +1,22 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public interface Vehicle { + + String getBrand(); + + String speedUp(); + + String slowDown(); + + default String turnAlarmOn() { + return "Turning the vehice alarm on."; + } + + default String turnAlarmOff() { + return "Turning the vehicle alarm off."; + } + + static int getHorsePower(int rpm, int torque) { + return (rpm * torque) / 5252; + } +} \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java b/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java new file mode 100644 index 0000000000..7d4b06908a --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java @@ -0,0 +1,79 @@ +package com.baeldung.defaultistaticinterfacemethods.test; + +import com.baeldung.defaultstaticinterfacemethods.model.Car; +import com.baeldung.defaultstaticinterfacemethods.model.Motorbike; +import com.baeldung.defaultstaticinterfacemethods.model.Vehicle; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.assertj.core.api.Assertions.*; + +public class StaticDefaulInterfaceMethodUnitTest { + + private static Car car; + private static Motorbike motorbike; + + @BeforeClass + public static void setUpCarInstance() { + car = new Car("BMW"); + } + + @BeforeClass + public static void setUpMotorbikeInstance() { + motorbike = new Motorbike("Yamaha"); + } + + @Test + public void givenCarInstace_whenBrandisBMW_thenOneAssertion() { + assertThat(car.getBrand()).isEqualTo("BMW"); + } + + @Test + public void givenCarInstance_whenCallingSpeedUp_thenOneAssertion() { + assertThat(car.speedUp()).isEqualTo("The car is speeding up."); + } + + @Test + public void givenCarInstance_whenCallingSlowDown_thenOneAssertion() { + assertThat(car.slowDown()).isEqualTo("The car is slowing down."); + } + + @Test + public void givenCarInstance_whenCallingTurnAlarmOn_thenOneAssertion() { + assertThat(car.turnAlarmOn()).isEqualTo("Turning the vehice alarm on."); + } + + @Test + public void givenCarInstance_whenCallingTurnAlarmOff_thenOneAssertion() { + assertThat(car.turnAlarmOff()).isEqualTo("Turning the vehicle alarm off."); + } + + @Test + public void givenVehicleInterface_whenCallinggetHorsePower_thenOneAssertion() { + assertThat(Vehicle.getHorsePower(2500, 480)).isEqualTo(228); + } + + @Test + public void givenMooorbikeInstace_whenBrandisYamaha_thenOneAssertion() { + assertThat(motorbike.getBrand()).isEqualTo("Yamaha"); + } + + @Test + public void givenMotorbikeInstance_whenCallingSpeedUp_thenOneAssertion() { + assertThat(motorbike.speedUp()).isEqualTo("The motorbike is speeding up."); + } + + @Test + public void givenMotorbikeInstance_whenCallingSlowDown_thenOneAssertion() { + assertThat(motorbike.slowDown()).isEqualTo("The motorbike is slowing down."); + } + + @Test + public void givenMotorbikeInstance_whenCallingTurnAlarmOn_thenOneAssertion() { + assertThat(motorbike.turnAlarmOn()).isEqualTo("Turning the vehice alarm on."); + } + + @Test + public void givenMotorbikeInstance_whenCallingTurnAlarmOff_thenOneAssertion() { + assertThat(motorbike.turnAlarmOff()).isEqualTo("Turning the vehicle alarm off."); + } +} \ No newline at end of file