From 3f1778907a98d5e85f40e1029bc6c81a15ea2235 Mon Sep 17 00:00:00 2001 From: Vikas Ramsingh Rajput Date: Sun, 16 May 2021 09:32:20 +0530 Subject: [PATCH 1/4] 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())); + } +} From 199d80fb34376cca77cfb2525fd0ba951bd1d3ef Mon Sep 17 00:00:00 2001 From: Vikas Ramsingh Rajput Date: Sun, 23 May 2021 16:14:00 +0530 Subject: [PATCH 2/4] BAEL-4936: Removed similar methods as per review comments --- .../InterfaceVsAbstractClassUnitTest.java | 15 --------------- 1 file changed, 15 deletions(-) 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 index 9e059bcd3d..88a0c3bd19 100644 --- 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 @@ -1,6 +1,5 @@ package com.baeldung.interfaceVsAbstractClass; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -13,24 +12,10 @@ public class InterfaceVsAbstractClassUnitTest { 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())); - } } From 12dc1287a5558562865419f2e729f91c34bc5cdb Mon Sep 17 00:00:00 2001 From: Vikas Ramsingh Rajput Date: Sun, 30 May 2021 15:45:46 +0530 Subject: [PATCH 3/4] BAEL-4936: Added getColor() method in CircleInterface class as per the review comment --- .../interfaceVsAbstractClass/ChidlCircleInterfaceImpl.java | 1 + .../baeldung/interfaceVsAbstractClass/CircleInterface.java | 6 ++++-- .../InterfaceVsAbstractClassUnitTest.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) 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 index 991ccad4d7..2aadf2e2e8 100644 --- 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 @@ -3,6 +3,7 @@ package com.baeldung.interfaceVsAbstractClass; public class ChidlCircleInterfaceImpl implements CircleInterface { private String color; + @Override public String getColor() { return 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 index ee29cdd659..1e01480c3f 100644 --- 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 @@ -6,8 +6,10 @@ import java.util.List; public interface CircleInterface { List allowedColors = Arrays.asList("RED", "GREEN", "BLUE"); - public default boolean isValid(String color) { - if (allowedColors.contains(color)) { + String getColor(); + + public default boolean isValid() { + if (allowedColors.contains(getColor())) { 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 index 88a0c3bd19..ecaacc4b21 100644 --- 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 @@ -16,6 +16,6 @@ public class InterfaceVsAbstractClassUnitTest { public void givenInterface_whenValidCircleWithoutStateUsedThenPass() { ChidlCircleInterfaceImpl redCircleWithoutState = new ChidlCircleInterfaceImpl(); redCircleWithoutState.setColor("RED"); - assertTrue(redCircleWithoutState.isValid(redCircleWithoutState.getColor())); + assertTrue(redCircleWithoutState.isValid()); } } From c3563566f805ede7ad5da0973b45767cc812c70f Mon Sep 17 00:00:00 2001 From: Vikas Ramsingh Rajput Date: Fri, 11 Jun 2021 19:55:03 +0530 Subject: [PATCH 4/4] BAEL-4936: converted multiline code to one liner, also changed names of unit test methods --- .../baeldung/interfaceVsAbstractClass/CircleClass.java | 6 +----- .../interfaceVsAbstractClass/CircleInterface.java | 8 ++------ .../InterfaceVsAbstractClassUnitTest.java | 4 ++-- 3 files changed, 5 insertions(+), 13 deletions(-) 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 index b2a0cfab9f..048ffa4fe9 100644 --- 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 @@ -9,11 +9,7 @@ public abstract class CircleClass { private List allowedColors = Arrays.asList("RED", "GREEN", "BLUE"); public boolean isValid() { - if (allowedColors.contains(getColor())) { - return true; - } else { - return false; - } + return allowedColors.contains(getColor()); } public String getColor() { 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 index 1e01480c3f..a0c3a6d9c6 100644 --- 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 @@ -7,12 +7,8 @@ public interface CircleInterface { List allowedColors = Arrays.asList("RED", "GREEN", "BLUE"); String getColor(); - + public default boolean isValid() { - if (allowedColors.contains(getColor())) { - return true; - } else { - return false; - } + return allowedColors.contains(getColor()); } } 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 index ecaacc4b21..8cba13ddeb 100644 --- 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 @@ -6,14 +6,14 @@ import org.junit.Test; public class InterfaceVsAbstractClassUnitTest { @Test - public void givenAbstractClass_whenValidCircleUsedThenPass() { + public void givenAbstractClass_whenValidCircleUsed_thenPass() { CircleClass redCircle = new ChildCircleClass(); redCircle.setColor("RED"); assertTrue(redCircle.isValid()); } @Test - public void givenInterface_whenValidCircleWithoutStateUsedThenPass() { + public void givenInterface_whenValidCircleWithoutStateUsed_thenPass() { ChidlCircleInterfaceImpl redCircleWithoutState = new ChidlCircleInterfaceImpl(); redCircleWithoutState.setColor("RED"); assertTrue(redCircleWithoutState.isValid());