- ๋ ๊ฐ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ํ ์ผ์ด ์๋๋ฐ ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ํฌํจํ๋ ํํ์ผ ๋ ์์์ ์ฌ์ฉํด์ผํ๋ค.
- โ00์ 00์ ์ข
๋ฅ ์ค ํ๋๋คโ ๋ผ๊ณ ๋งํ ์ ์๋ค๋ฉด ์ด ๊ด๊ณ๋ฅผ ์์ ๊ด๊ณ๋ผ๊ณ ํ๋ค. ์์ ๊ด๊ณ๋ is a ๊ด๊ณ ํน์ kind of ๊ด๊ณ๋ผ๊ณ ๋ ํ๋ค.
- ex) ์ธํ๊ธฐ๋ ๊ฐ์ ์ ํ์ด๋ค. ์ ํ๊ธฐ๋ ๊ฐ์ ์ ํ์ด๋ค.
- ์ด๋ฏธ ๊ฐ๋ฐ๋ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋๋ ์ฝ๋๋ฅผ ์ค์ฌ์ค๋ค.
- ํ๋ก๊ทธ๋จ์์๋ ์์์ด ๋ถ๋ชจ๋ฅผ ์ ํํ๋ค. ์์ ํด๋์ค๋ฅผ ์ ์ธํ ๋, ์ด๋ค ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์๋ฐ์์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
์์
- ์ ์์ ํ,TV,์ ์๋ ์ธ์ง ํด๋์ค๊ฐ ์๋ค๊ณ ์๊ฐํด๋ณด์.
- TV์ ์ ์๋ ์ธ์ง๋ ์ ์์ ํ์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ์ ์ ์ ํ์ ๋ถ๋ชจ ํด๋์ค, TV์ ์ ์๋ ์ธ์ง๋ ์์ ํด๋์ค๊ฐ ๋๋ค.
- ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ex) TV์ ์ ์๋ ์ธ์ง๋ ๋๋ค,์ผ๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ฌ๋ฌ ์ข
๋ฅ์ ๊ฐ์ฒด๋ฅผ ํ๋์ ์ด๋ฆ์ผ๋ก ๋ถ๋ฅผ ์ ์๋ ๊ฒ์ ์ผ๋ฐํ๋ผ๊ณ ํ๋ค.
- ์์์ ๊ฐํ ๊ฒฐํฉ์ด๋ค. ๋ฐ๋์ ์จ์ผํ ๋๋ง ์ฐ๋ ๊ฒ์ด ์ข๋ค. ์๋ชป ๋ฐ์ผ๋ฉด ํ๊ฒฉ์ด ํฌ๋ค.
์ ์ธ ๋ฐฉ๋ฒ
[์ ๊ทผ ์ ํ์][abstract, final] class ํด๋์ค๋ช
extends ๋ถ๋ชจ ํด๋์ค๋ช
{}
์์์ ํน์ง
- ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์ํ ์ ์๋ค.
- extends ๋ค์๋ ๋จ ํ๋์ ๋ถ๋ชจ ํด๋์ค๋ง ์์ผํ๋ค
- ์๋ฌด ๊ฒ๋ ์์๋ฐ์ง ์์ผ๋ฉด java.lang.Object๋ฅผ ์์๋ฐ๋๋ค.
- ๋ชจ๋ ํด๋์ค๋ ์ค๋ธ์ ํธ์ ์์์ด๋ค
- ๋ถ๋ชจ ํด๋์ค์์ private ์ ๊ทผ ์ ํ์๋ฅผ ๊ฐ๋ ํ๋์ ๋ฉ์๋๋ ์์ ๋์์์ ์ ์ธ๋๋ค. ๋ํ ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค๊ฐ ๋ค๋ฅธ ํจํค์ง์ ์กด์ฌํ๋ค๋ฉด default ์ ๊ทผ ์ ํ์๋ฅผ ๊ฐ๋ ํ๋์ ๋ฉ์๋๋ ์์ ๋์์์ ์ ์ธ๋๋ค.
- ๋ถ๋ชจ ํ์
์ผ๋ก ์์ ํ์
์ ์ฐธ์กฐํ ์ ์๋ค.
- ๋ฒ์ค๋ ์๋์ฐจ๋ค
- Car car = new Bus();
๋ถ๋ชจ ์์ฑ์์ ํธ์ถ
- ์๋ฐ์์๋ ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ๋ถ๋ชจ ๊ฐ์ฒด๊ฐ ๋จผ์ ์์ฑ๋๊ณ ๊ทธ ๋ค์ ์์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ก ํํํ๋ฉด ์ด๋ ๊ฒ ์ฐธ์กฐ๋๋ค.
- ์คํ์์ญ์ ์์ ํด๋์ค ๊ฐ์ฒด ๋ฒ์ง โ ํ์์ญ์ ์์ ๊ฐ์ฒด ๋ฒ์ง โ ํ์์ญ์ ๋ถ๋ชจ ๊ฐ์ฒด ๋ฒ์ง
- ๊ทธ๋ ๋ค๋ฉด ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ถ๋ชจ ์์ฑ์๋ฅผ ์ด๋์ ํธ์ถํ๋ ๊ฒ์ผ๊น??
- ๋ถ๋ชจ ์์ฑ์๋ ์์ ์์ฑ์์ ๋งจ ์ฒซ์ค์ super()๋ผ๋ ํค์๋๋ฅผ ํตํด ํธ์ถ๋๋ค.
- super()๋ ๋ถ๋ชจ์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
- super(๋งค๊ฐ๋ณ์,โฆ)๋ ๋งค๊ฐ๋ณ์์ ํ์
๊ณผ ์ผ์นํ๋ ๋ถ๋ชจ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
- superํค์๋๋ฅผ ์๋ตํด๋ ์ปดํ์ผ๋ฌ๊ฐ super()๊ฐ ์๋์ผ๋ก ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํธ์ถ๋๋ค. ๋ง์ฝ ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๊ณ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์๋ง ์๋ค๋ฉด ์์ ์์ฑ์์์ ๋ฐ๋์ ๋ถ๋ชจ ์์ฑ์ ํธ์ถ์ ์ํด super(๋งค๊ฐ๋ณ์,..)๋ฅผ ๋ช
์์ ์ผ๋ก ํธ์ถํด์ผํ๋ค.
- super ํค์๋๋ ์์ ์์ฑ์ ์ฒซ ์ค์ ์์นํด์ผํ๋ค.
์์
public class Parent {
public String name;
public int id;
public Parent(String name, int id) {
this.name = name;
this.id = id;
}
}
public class Child extends Parent{
int birthData;
public Child(String name, int id, int birthData){
super(name,id);
this.birthData=birthData;
}
}
public class Exam {
public static void main(String[] args) {
Parent parent = new Parent("๊น๋ฏผ์ ", 1);
System.out.println(parent.name + " : " + parent.id);
Child child = new Child("๊น๋ฏผ์ ", 1, 1999);
System.out.println(child.name + " : " + child.id + ", " + child.birthData);
}
}
->๊น๋ฏผ์ : 1
๊น๋ฏผ์ : 1, 1999
๋คํ์ฑ - ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ(overriding)
- ์์ ํด๋์ค์ ๋ฉ์๋๊ฐ ํ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ๊ฒ
- ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ค์ํ๊ฒ ๋ฐ์๋ค์ด๋ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด์ ์ฌ์ฉ์๊ฐ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ
- ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ถ๋ชจ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋๋ฅผ ์์ ํ ๊ฐ์ ํํ๋ก ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ๋งํ๋ค.
- ๋ฉ์๋๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ๋๋ฉด ๋ฌด์กฐ๊ฑด ์์ ํด๋์ค์ ์๋ ๋ฉ์๋๊ฐ ์คํ๋๋ค.
- ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉํ๋ค๋ ๊ฒ์ ๊ทธ ์ค๋ฒ๋ผ์ด๋ฉ๋ ๋ฉ์๋์ ํํด์๋ ์ด์ ๋ถํฐ ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ป
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ ๋ฐฉ๋ฒ
- ๋ถ๋ชจ์ ๋ฉ์๋์ ๋์ผํ ์๊ทธ๋์ฒ(๋ฆฌํด ํ์
, ๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ ๋ณ์ ๋ชฉ๋ก)๋ฅผ ๊ฐ์ ธ์ผํ๋ค.
- ์ ๊ทผ ์ ํ์ ๋ ๊ฐํ๊ฒ ์ฌ์ ์ํ ์ ์๋ค.(ex. public โ private,default๋ก ์์ ๋ถ๊ฐ๋ฅ)
- ์๋ก์ด ์์ธ(Exception)๋ฅผ throwsํ ์ ์๋ค.
- ์์ ํด๋์ค์์ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๊ฒ๋๋ฉด ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ ์จ๊ฒจ์ง๊ณ ์ฌ์ ์๋ ์์ ๋ฉ์๋๋ง ์ฌ์ฉ๋๋ค. ์์ ํด๋์ค ๋ด๋ถ์์ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผํ๋ค๋ฉด superํค์๋๋ฅผ ๋ถ์ฌ์ ๋ถ๋ชจ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.
- ์์
public class Parent {
public void print1() {
System.out.println("๋ถ๋ชจ ํด๋์ค์๋น!");
}
public void print2(){
System.out.println("๋ถ๋ชจ ๋ฉ์๋ ํธ์ถ!");
}
}
public class Child extends Parent{
public void print1(){
System.out.println("์์์๋น..");
}
public void print2(){
super.print2();
System.out.println("์์ ํด๋์ค ํธ์ถ!");
}
}
public class Exam {
public static void main(String[] args) {
Parent parent = new Parent();
parent.print1();
Child child = new Child();
child.print1();
parent.print2();
child.print2();
}
}
->๋ถ๋ชจ ํด๋์ค์๋น!
์์์๋น..
๋ถ๋ชจ ๋ฉ์๋ ํธ์ถ!
๋ถ๋ชจ ๋ฉ์๋ ํธ์ถ!
์์ ํด๋์ค ํธ์ถ!
๋คํ์ฑ
- ๋คํ์ฑ์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋์ผํ์ง๋ง ๋ค์ํ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ๋ค์ํ ์คํ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก ํ๋ ์ฑ์ง์ด๋ค.
- ๋คํ์ฑ์ ๊ตฌํํ๋ ค๋ฉด ๋ฉ์๋ ์ฌ์ ์์ ํ์
๋ณํ์ด ํ์ํ๋ค.
- ๋คํ์ฑ์ ์ฅ์
- ์ ์ง๋ณด์ : ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ํ๋์ ํ์
์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
- ์ฌ์ฌ์ฉ์ฑ : ๊ฐ์ฒด์ ์ฌ์ฌ์ฉ์ด ์ฌ์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค.
- ๋์จํ ๊ฒฐํฉ : ํด๋์ค ๊ฐ์ ์์กด์ฑ์ ์ค์ฌ ํ์ฅ์ฑ์ ๋์์ง๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์์ง๋ค.
์๋ ํ์
๋ณํ
์ค๋ฒ๋ผ์ด๋ฉ
- ์ฐ๋ฆฌ๋ ์์์ ์ค๋ฒ๋ผ์ด๋ฉ์ ๊ณต๋ถํ์๋ค. ๋คํ์ฑ์ ๊ตฌํํ๋ ค๋ฉด ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ด ํ์ํ๋ค.
- Car class์ run์ โ์ ๋ฅ๊ตฌ๋ํ๋ค.โ๋ผ๊ณ ๋๊ณ Bus class์ run์ โํ๋ฅ๊ตฌ๋ํ๋ค.โ๋ผ๊ณ ๋๋ฉด ์ถ๋ ฅ์ ๋ ๋ค โํ๋ฅ๊ตฌ๋ํ๋คโ๋ก ์ถ๋ ฅ๋๋ค
- ๋ ๋ค bus์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ bus์ ๋ฉ์๋๊ฐ ์คํ๋๋ค.
- ํ๋๋ Type์ ๋ฐ๋ผ๊ฐ๊ณ ๋ฉ์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ๋ ์์์ ๋ฉ์๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ค.
Parent.class
public class Parent {
int i = 5;
public void printII(){
System.out.println(i*2);
}
public void printI(){
System.out.println("Parent - printI() : " + i);
}
}
child.class
public class child extends Parent{
public int i = 15;
public void printI(){
System.out.println("Child - printI() : " + i);
}
}
exam01.class
public class exam01 {
public static void main(String[] args) {
Parent p1 = new Parent();
System.out.println(p1.i);
p1.printI();
child c1 = new child();
System.out.println(c1.i);
c1.printI();
Parent p2 = new child();
System.out.println(p2.i);
p2.printII();
p2.printI();
}
}
- ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ๋ง ๊ธฐ์ตํ๋ฉด ๋จ
- ์ ๋ณด ์๋์ ๊ฐ์ฒด ์งํฅ์ ์ค์ํ ๊ธฐ๋ฒ์ด๋ค. ์ค์ํ ํ๋๋ ์๋ํ๊ณ , ํ๋๋ ๋ฉ์๋๋ฅผ ํตํด์๋ง ์ ๊ทผํ๋๋ก ์ฌ์ฉํ๋ค.
- exam01์์๋ parent๋ child์ ํ๋ i์ ์ง์ ์ ๊ทผํ๋ฉด ์๋๋ค. ํ๋์ ์ง์ ์ ๊ทผํ์ง ์๊ณ ๋ฉ์๋๋ฅผ ํตํด์ ๋ฐ๊พธ๊ฑฐ๋ ์ ๊ทผํด์ผํจ
- ์ด๋ฌํ ๊ฐ๋
์ ์ ๋ณด ์๋์ด๋ผ ํ๊ณ ๊ฐ์ฒด ์งํฅ ๋ฌธ๋ฒ ์ค ์ ๊ทผ ์ง์ ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํ๋ค.
- ์์ ์ ์ํด ๋ง๋ ์ ํธ๋ฑ ๋๋ฌธ์ ์ง๊ฐ์ ํ๋ค๊ณ ์ ํธ๋ฑ์ ์์ ๋ฉด ์๋๋ค.
- ์์ผ๋ก ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์ ๋ณด๋ฅผ ์ธ๋ถ์ ๋๋ฌ๋์ง ์๋๋ก ํ๋ ๊ธฐ๋ฒ๋ค์ ์ฌ์ฉํ ๊ฒ์ธ๋ฐ ์ด๋ฅผ ์ ํธ๋ฑ์ ์ธ์ด๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋คํ์ฑ์ ์ฌ์ฉํ๋ ์ด์ (feat.Object)
- ๋ถ๋ชจ ํ์
์ ๋ณ์๋ก ์์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
- ์กฐ์ ํ์
์ ๋ณ์๋ก ํ์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
- Parent c1 = new Child(); -> Parent๋ Child์ ์์์ด๋ค.
- ์๋ฌด๊ฒ๋ ์์๋ฐ์ง ์์ผ๋ฉด Object๋ฅผ ์์๋ฐ๋๋ค
- Object b1 = new Parent();
- Object b2 = new Child();
- prinrln(Object x)์ฒ๋ผ object๋ฅผ ๋ฐ์๋ค์ผ ์ ์๋ค๋ ๊ฒ์ Object๋ก ์ฐธ์กฐํ ์ ์๋ ๊ฒ์ ๋ฌด์์ด๋ ๋ฐ์ ์ ์๋ค.
- Object์ ์์๋ค์ ๋ค ์ด ๋ฉ์๋์ ์ฌ ์ ์๋ค.
- System.out.println(b1.toString()); == System.out.println(b1);
๋คํ์ฑ ์ฌ์ฉ ์์