From 3f1778907a98d5e85f40e1029bc6c81a15ea2235 Mon Sep 17 00:00:00 2001 From: Vikas Ramsingh Rajput Date: Sun, 16 May 2021 09:32:20 +0530 Subject: [PATCH] BAEL-4936: Completed artcile Abstract class with default method vs interface --- .../ChidlCircleInterfaceImpl.java | 13 +++++++ .../ChildCircleClass.java | 5 +++ .../interfaceVsAbstractClass/CircleClass.java | 27 ++++++++++++++ .../CircleInterface.java | 16 +++++++++ .../InterfaceVsAbstractClassUnitTest.java | 36 +++++++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChidlCircleInterfaceImpl.java create mode 100644 core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChildCircleClass.java create mode 100644 core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleClass.java create mode 100644 core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleInterface.java create mode 100644 core-java-modules/core-java-8-2/src/test/java/com/baeldung/interfaceVsAbstractClass/InterfaceVsAbstractClassUnitTest.java diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChidlCircleInterfaceImpl.java b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChidlCircleInterfaceImpl.java new file mode 100644 index 0000000000..991ccad4d7 --- /dev/null +++ b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChidlCircleInterfaceImpl.java @@ -0,0 +1,13 @@ +package com.baeldung.interfaceVsAbstractClass; + +public class ChidlCircleInterfaceImpl implements CircleInterface { + private String color; + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChildCircleClass.java b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChildCircleClass.java new file mode 100644 index 0000000000..8d26bda306 --- /dev/null +++ b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/ChildCircleClass.java @@ -0,0 +1,5 @@ +package com.baeldung.interfaceVsAbstractClass; + +public class ChildCircleClass extends CircleClass { + +} diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleClass.java b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleClass.java new file mode 100644 index 0000000000..b2a0cfab9f --- /dev/null +++ b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleClass.java @@ -0,0 +1,27 @@ +package com.baeldung.interfaceVsAbstractClass; + +import java.util.Arrays; +import java.util.List; + +public abstract class CircleClass { + + private String color; + private List allowedColors = Arrays.asList("RED", "GREEN", "BLUE"); + + public boolean isValid() { + if (allowedColors.contains(getColor())) { + return true; + } else { + return false; + } + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + +} diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleInterface.java b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleInterface.java new file mode 100644 index 0000000000..ee29cdd659 --- /dev/null +++ b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/interfaceVsAbstractClass/CircleInterface.java @@ -0,0 +1,16 @@ +package com.baeldung.interfaceVsAbstractClass; + +import java.util.Arrays; +import java.util.List; + +public interface CircleInterface { + List allowedColors = Arrays.asList("RED", "GREEN", "BLUE"); + + public default boolean isValid(String color) { + if (allowedColors.contains(color)) { + return true; + } else { + return false; + } + } +} diff --git a/core-java-modules/core-java-8-2/src/test/java/com/baeldung/interfaceVsAbstractClass/InterfaceVsAbstractClassUnitTest.java b/core-java-modules/core-java-8-2/src/test/java/com/baeldung/interfaceVsAbstractClass/InterfaceVsAbstractClassUnitTest.java new file mode 100644 index 0000000000..9e059bcd3d --- /dev/null +++ b/core-java-modules/core-java-8-2/src/test/java/com/baeldung/interfaceVsAbstractClass/InterfaceVsAbstractClassUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.interfaceVsAbstractClass; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class InterfaceVsAbstractClassUnitTest { + @Test + public void givenAbstractClass_whenValidCircleUsedThenPass() { + CircleClass redCircle = new ChildCircleClass(); + redCircle.setColor("RED"); + assertTrue(redCircle.isValid()); + } + + @Test + public void givenAbstractClass_whenInvalidCircleUsedThenFail() { + CircleClass redCircle = new ChildCircleClass(); + redCircle.setColor("WHITE"); + assertFalse(redCircle.isValid()); + } + + @Test + public void givenInterface_whenValidCircleWithoutStateUsedThenPass() { + ChidlCircleInterfaceImpl redCircleWithoutState = new ChidlCircleInterfaceImpl(); + redCircleWithoutState.setColor("RED"); + assertTrue(redCircleWithoutState.isValid(redCircleWithoutState.getColor())); + } + + @Test + public void givenInterface_whenInvalidCircleWithoutStateUsedThenFail() { + ChidlCircleInterfaceImpl redCircleWithoutState = new ChidlCircleInterfaceImpl(); + redCircleWithoutState.setColor("WHITE"); + assertFalse(redCircleWithoutState.isValid(redCircleWithoutState.getColor())); + } +}