diff --git a/practice/extends1/Child.java b/practice/extends1/Child.java new file mode 100644 index 000000000..dd71b2ac2 --- /dev/null +++ b/practice/extends1/Child.java @@ -0,0 +1,12 @@ +package extends1; + +public class Child extends Parent { + public Child() { + System.out.println("Child Constructor"); + } + + @Override + public void printProtectedName() { + System.out.println("Parent printProtectedName()"); + } +} diff --git a/practice/extends1/ChildArg.java b/practice/extends1/ChildArg.java new file mode 100644 index 000000000..b7448489a --- /dev/null +++ b/practice/extends1/ChildArg.java @@ -0,0 +1,13 @@ +package extends1; + +public class ChildArg extends ParentArg { + public ChildArg() { + super("ChildArgName ~~~ "); + System.out.println("Child Constructor"); + } + + @Override + public void printName() { + System.out.println("ChildArg printName() Overriding"); + } +} diff --git a/practice/extends1/Friend.java b/practice/extends1/Friend.java new file mode 100644 index 000000000..10e284e7c --- /dev/null +++ b/practice/extends1/Friend.java @@ -0,0 +1,7 @@ +package extends1; + +public class Friend { + public Friend() { + System.out.println("Friend Constructor"); + } +} diff --git a/practice/extends1/GrandChild.java b/practice/extends1/GrandChild.java new file mode 100644 index 000000000..e3e9384c4 --- /dev/null +++ b/practice/extends1/GrandChild.java @@ -0,0 +1,11 @@ +package extends1; + +public class GrandChild extends Child { + public GrandChild() { + System.out.println("GrandChild Constructor"); + } + + public void print() { + System.out.println("GrandChild!!!!!"); + } +} diff --git a/practice/extends1/Parent.java b/practice/extends1/Parent.java new file mode 100644 index 000000000..05afb8a51 --- /dev/null +++ b/practice/extends1/Parent.java @@ -0,0 +1,19 @@ +package extends1; + +public class Parent { + public Parent() { + System.out.println("Parent Constructor"); + } + + public void printName() { + System.out.println("Parent printName()"); + } + + private void printPrivateName() { + System.out.println("Parent printPrivateName()"); + } + + protected void printProtectedName() { + System.out.println("Parent printProtectedName()"); + } +} diff --git a/practice/extends1/ParentArg.java b/practice/extends1/ParentArg.java new file mode 100644 index 000000000..6439b7cd2 --- /dev/null +++ b/practice/extends1/ParentArg.java @@ -0,0 +1,12 @@ +package extends1; + +public class ParentArg { + + public ParentArg(String name) { + System.out.println("ParentArg("+name+") Constructor"); + } + + public void printName() { + System.out.println("ParentArg printName()"); + } +} diff --git a/practice/extends1/RunExtends.java b/practice/extends1/RunExtends.java new file mode 100644 index 000000000..a56108167 --- /dev/null +++ b/practice/extends1/RunExtends.java @@ -0,0 +1,30 @@ +package extends1; + +public class RunExtends { + public static void main(String[] args) { + // 1. 매개변수가 없는 경우 + Child child = new Child(); +// child.printName(); +//// child.printPrivateName(); 불가능! + child.printProtectedName(); + + // 2. 매개변수가 있는 경우 + ChildArg childArg = new ChildArg(); + childArg.printName(); + +// // 3. 손자의 경우 +// GrandChild grandChild = new GrandChild(); +// grandChild.printProtectedName(); + + // 4. 상속 구조가 아닌 경우 + Friend friend = new Friend(); +// friend.printProtectedName(); 불가능! + + // 5. 형변환 + // (1) 가능 + Parent parent = new Child(); + + // (2) 불가능 + Child child = new Parent(); + } +}