diff --git a/StudyInterfaces/.classpath b/StudyInterfaces/.classpath
new file mode 100644
index 0000000..57bca72
--- /dev/null
+++ b/StudyInterfaces/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/StudyInterfaces/.project b/StudyInterfaces/.project
new file mode 100644
index 0000000..ac4f9f7
--- /dev/null
+++ b/StudyInterfaces/.project
@@ -0,0 +1,17 @@
+
+
+ StudyInterfaces
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/StudyInterfaces/.settings/org.eclipse.core.resources.prefs b/StudyInterfaces/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/StudyInterfaces/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/StudyInterfaces/.settings/org.eclipse.jdt.core.prefs b/StudyInterfaces/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9943d
--- /dev/null
+++ b/StudyInterfaces/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,14 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/StudyInterfaces/src/com/example/Exercise01.java b/StudyInterfaces/src/com/example/Exercise01.java
new file mode 100644
index 0000000..a362db0
--- /dev/null
+++ b/StudyInterfaces/src/com/example/Exercise01.java
@@ -0,0 +1,21 @@
+package com.example;
+
+public class Exercise01 {
+
+ public static void main(String[] args) {
+
+ }
+
+}
+
+interface A {
+}
+
+interface B {
+}
+
+interface C {
+}
+
+interface D extends A, B, C { // multiple inheritance
+}
\ No newline at end of file
diff --git a/StudyInterfaces/src/com/example/Exercise02.java b/StudyInterfaces/src/com/example/Exercise02.java
new file mode 100644
index 0000000..bd9e830
--- /dev/null
+++ b/StudyInterfaces/src/com/example/Exercise02.java
@@ -0,0 +1,21 @@
+package com.example;
+
+public class Exercise02 {
+
+ public static void main(String[] args) {
+ DD o = new DD();
+ System.out.println(o instanceof DD);
+ System.out.println(o instanceof CC);
+ // Error : System.out.println(o instanceof AA);
+ System.out.println(o instanceof BB);
+ }
+
+}
+
+abstract class AA {}
+abstract class GG {}
+interface BB {}
+interface FF {}
+abstract class CC {}
+
+class DD extends CC implements BB, FF {}
\ No newline at end of file
diff --git a/StudyInterfaces/src/com/example/Exercise03.java b/StudyInterfaces/src/com/example/Exercise03.java
new file mode 100644
index 0000000..69c2d62
--- /dev/null
+++ b/StudyInterfaces/src/com/example/Exercise03.java
@@ -0,0 +1,27 @@
+package com.example;
+
+public class Exercise03 {
+ public static void main(String[] args) {
+
+ }
+}
+
+sealed interface Service permits ABC, XYZ {
+ int fun();
+}
+
+final class ABC implements Service {
+
+ @Override
+ public int fun() {
+ return 42;
+ }
+}
+
+final class XYZ implements Service {
+
+ @Override
+ public int fun() {
+ return 108;
+ }
+}
\ No newline at end of file
diff --git a/study-functional-programming/.classpath b/study-functional-programming/.classpath
new file mode 100644
index 0000000..57bca72
--- /dev/null
+++ b/study-functional-programming/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/study-functional-programming/.project b/study-functional-programming/.project
new file mode 100644
index 0000000..13afc64
--- /dev/null
+++ b/study-functional-programming/.project
@@ -0,0 +1,17 @@
+
+
+ study-functional-programming
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/study-functional-programming/.settings/org.eclipse.core.resources.prefs b/study-functional-programming/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/study-functional-programming/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/study-functional-programming/.settings/org.eclipse.jdt.core.prefs b/study-functional-programming/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9943d
--- /dev/null
+++ b/study-functional-programming/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,14 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/study-functional-programming/src/com/example/DefineFunctionalProgramming.java b/study-functional-programming/src/com/example/DefineFunctionalProgramming.java
new file mode 100644
index 0000000..e975105
--- /dev/null
+++ b/study-functional-programming/src/com/example/DefineFunctionalProgramming.java
@@ -0,0 +1,40 @@
+package com.example;
+
+import java.util.List;
+import java.util.function.Predicate;
+
+public class DefineFunctionalProgramming {
+
+ public static void main(String[] args) {
+ // fp's function: 1) higher-order function
+ // 2) pure function -> immutable ->
+ // i. Lambda Expression
+ // ii. Method Reference
+ var numbers = List.of(4, 8, 15, 16, 23, 42);
+ // even -> cube -> sum
+ // New Type: function -> functional interface -> Single Abstract Method
+ MyFun x = u -> 2 * u - 5 ;
+
+ // Build-in Functional Interface: Predicate, Function, ...
+ Predicate isEven = z -> z%2 == 0;
+ var result =
+ numbers.stream()
+ //.filter(z -> z%2 ==0) // 4 8 16 42
+ .filter(MyFun::ciftMi) // 4 8 16 42
+ //.mapToInt(p -> p*p*p) // 64 512 4096 74088
+ .mapToInt(MyFun::kubu) // 64 512 4096 74088
+ // (0,64) -> 64 -> (64,512) -> 576 -> (576,4096) -> 4672 -> (4672,74088) -> 78760
+ //.reduce(0, (s,r)->s+r);
+ //.reduce(0, Integer::sum);
+ .sum();
+ System.out.println(result);
+ }
+
+}
+
+@FunctionalInterface
+interface MyFun {
+ int fun(int x);
+ static boolean ciftMi(int x) { return x%2 == 0;}
+ static int kubu(int x) {return x*x*x;}
+}
\ No newline at end of file