๐ ์๋ฐ์ ์ ์์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
์์Inheritance
๊ธฐ์กด์ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
์ฝ๋๋ฅผ ๊ณตํต์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์ ํ๊ธฐ ์ฝ๋ค.
class Child extends Parent {
//...
}
extends๋ง์ผ๋ก ๊ฐ๋จํ๊ฒ ์์ ๋ฐ์ ์ ์๋ค.
์์ํด์ฃผ๋ ํด๋์คParent๋ฅผ ์กฐ์ ํด๋์ค, ์์์ ๋ฐ๋ ํด๋์คChild๋ฅผ ์์ ํด๋์ค๋ผ๊ณ ํ๋ค.
์ด ๋ ๊ด๊ณ๋ฅผ ์์๊ด๊ณ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ถ์ฒ : https://www.javatpoint.com/inheritance-in-java
์กฐ์ํด๋์ค๋ ์์ ํด๋์ค๊ฐ ๋ณ๊ฒฝ ๋์ด๋ ์ํฅ์ ๋ฐ์ง ์์ง๋ง,
์กฐ์ํด๋์ค๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์์ ํด๋์ค๋ ์ํฅ์ ๋ฐ๋๋ค.
์์ ํด๋์ค๋ ์กฐ์ ํด๋์ค์ ๋ชจ๋ ๋ฉค๋ฒ๋ฅผ ์์ ๋ฐ๋๋ค. ๋ฐ๋ผ์ ํญ์ ์กฐ์ ํด๋์ค๋ณด๋ค ๊ฐ๊ฑฐ๋ ๋ง์ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋๋ค. ์์์ ์์์ ๊ฑฐ๋ญํ๋ค๋ฉด, ๋ฉค๋ฒ๋ ์ ์ ํ์ฅ(extends)๋๋ค. ๊ทธ๋์ ์์์ ์ด์ฉํ๋ค๋ ๊ฒ์ ์ฆ ์กฐ์ ํด๋์ค๋ฅผ ํ์ฅextendsํ๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํ๋ค.
์๋ฐ๋ ๋จ์ผ์์๋ง ๊ฐ๋ฅํ๋ค. ๋ ๊ฐ์ ํด๋์ค๋ฅผ ๋์์ extendsํ ์ ์๋ค.
ํ์ํ๋ค๋ฉด ์ธํฐํ์ด์ค๋ ํฌํจ๊ด๊ณ๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
ํฌํจ๊ด๊ณ
ํ ํด๋์ค์ ๋ฉค๋ฒ๋ณ์๋ก ๋ค๋ฅธ ํด๋์ค ํ์ ์ ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ์ ๋ปํ๋ค.
class ArcReactor{
//...
}
class TonyStark{
ArcReactor arc = new ArcReactor();
}
class Ironman() {
TonyStark tony = new TonyStark();
}
์์ ๊ฐ์ด ๋จ์๋ณ๋ก ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๋ฅผ ํฌํจํด์ ๋ ํฐ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค.
ํ๋ก์ ํธ ์งํํ ๋ extends๋ ํ ๋ฒ๋ ์ฌ์ฉํ์ง ์์์ง๋ง ํฌํจ๊ด๊ณ๋ ์๋ ์์ด ๋ง์ด ์ฌ์ฉํ๋ค.
Object
Object๋ ๋ชจ๋ ํด๋์ค์ ์กฐ์์ด๋ค. ์๋ฌด๊ฒ๋ ์์๋ฐ๊ณ ์์ง ์์ ํด๋์ค๋ ๊ฒฐ๊ตญ Object๋ฅผ ์์๋ฐ๊ณ ์๋ค. toString()์ด๋ equals() ๊ฐ์ ๋ฉ์๋๋ ๋ชจ๋ Object์ ๋ฉ์๋๋ค.
์ค๋ฒ๋ผ์ด๋ฉOverriding
์์ ๋ฐ์ ๋ฉ์๋์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ค๋ฒ๋ผ์ด๋ฉ์ด๋ผ๊ณ ํ๋ค.
class CarCompo {
String color;
String gearType;
int door;
/*Objectํด๋์ค์ toString()์ ์ค๋ฒ๋ผ์ด๋ฉํด์ ์ฌ์ฉ*/
@Override
public String toString() {
return "CarCompo [color=" + color + ", gearType=" + gearType + ", door=" + door + "]";
}
}
์ดํด๋ฆฝ์ค ๊ธฐ์ค alt + shift + s โ Override/implements Methods๋ฅผ ๋๋ฅด๋ฉด ์ฝ๊ฒ ์ค๋ฒ๋ผ์ด๋ ํ ์ ์๋ค.
@Override ์ด๋ ธํ ์ด์ ์ ํน์ฌ ์ค๋ฒ๋ผ์ด๋ฉ์ ์๋ชป ํ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด ํญ์ ๋ถ์ด๋ ๊ฒ์ด ์ข๋ค.
์ค๋ฒ๋ผ์ด๋ฉ์ด ์๋ชป๋์๋ค๊ณ ๋ฐ๋ก ๋นจ๊ฐ ์ค์ ๊ทธ์ด์ฃผ๋๊น.
์ค๋ฒ๋ผ์ด๋ฉ ์กฐ๊ฑด
- ์ด๋ฆ์ด ๊ฐ์์ผ ํ๋ค
- ๋งค๊ฐ๋ณ์๊ฐ ๊ฐ์์ผ ํ๋ค
- ๋ฐํํ์ ์ด ๊ฐ์์ผ ํ๋ค
- ์ ๊ทผ ์ ์ด์๋ฅผ ์ข์ ๋ฒ์๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
- ์๋ ๋ฉ์๋๋ณด๋ค ๋ง์ ์์ธ๋ฅผ ์ ์ธํ ์ ์๋ค.
์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ์ ์ด๋ฆ๋ง ๋น์ทํ ๋ฟ ๋๋ฃ๊ฐ ์๋๋ค.
์ค๋ฒ๋ก๋ฉ : ๊ธฐ์กด์ ์๋ ์๋ก์ด ๋ฉ์๋๋ฅผ ์ ์ํ๋ ๊ฒ(new)
์ค๋ฒ๋ผ์ด๋ฉ:์์ ๋ฐ์ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ(modify)
super
super๋ ์ผ์ข ์ this๋ค. ์์๋ฐ์ ๋ฉค๋ฒ์ ์์ ์ ๋ฉค๋ฒ ์ด๋ฆ์ด ๊ฐ์ ๋ super๋ฅผ ๋ถ์ฌ์ ๊ตฌ๋ถํ๋ค.
์ฝ๋๋ฅผ ๋ณด๋ฉด ์ดํด๊ฐ ์ฝ๋ค.
public class Super {
public static void main(String[] args) {
Child child = new Child();
child.method();
}
}
class Parent {
int x = 10;
}
class Child extends Parent {
int x=20;
void method() {
System.out.println("x : " + x);
System.out.println("this.x : " + this.x); //์์ (Child)์ ๊ฐ๋ฆฌํค๋ this.
System.out.println("super.x : " + super.x);//๋ถ๋ชจ(Parent)๋ฅผ ๊ฐ๋ฆฌํค๋ super.
}
/*
๊ฒฐ๊ณผ :
x : 20
this.x : 20
super.x : 10
*/
super๋ toString()์ ์ค๋ฒ๋ผ์ด๋ฉ ํ ๋ super.toString() + ์์ ํด๋์ค์ ์ธ์คํด์ค ๋ณ์ ์ถ๋ ฅ
ํ๋ ์์ผ๋ก ์จ๋ดค๋ ๊ฒ ๊ฐ๋ค. ๋์ค์๋ lombok์ ์ฐ๋ ๊ฑฐ์ ์ฌ์ฉํ ์ผ์ด ์๊ธด ํ๋ค.
super()
์กฐ์ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์ด๋ค.
์์ฑ์ ์ฒซ ์ค์์ ์ฌ์ฉํด์ผ ํ๋ค. ์ด์ ๋ ์์ํด๋์ค์ ๋ฉค๋ฒ๊ฐ ์กฐ์ํด๋์ค ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํ ์๋ ์์ผ๋ฏ๋ก, ์กฐ์ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ๋ฏธ๋ฆฌ ์ด๊ธฐํ ํด๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Ojectํด๋์ค๋ฅผ ์ ์ธํ ๋ชจ๋ ํด๋์ค์ ์์ฑ์ ์ฒซ ์ค์ this() ๋๋ super()๋ฅผ ํธ์ถํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์์ฑ์ ์ฒซ ์ค์ ์ฝ์ ํ๋ค.
์ธ์คํด์ค๋ฅผ ์์ฑํ ๋๋ ์ด ๋๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
- ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๊ฒ์ธ๊ฐ?
- ํด๋น ํด๋์ค์ ์ด๋ค ์์ฑ์๋ฅผ ์ด์ฉํด์ ๋ง๋ค ๊ฒ์ธ๊ฐ?
public class Point {
public static void main(String[] args) {
Point3D p3 = new Point3D();
System.out.println("p3.x : " + p3.x);
System.out.println("p3.y : " + p3.y);
System.out.println("p3.z : " + p3.z);
}
}
class PointXY {
int x = 10;
int y = 20;
PointXY(int x, int y) {
//super(); == Object()
this.x = x;
this.y = y;
}
}
class Point3D extends PointXY {
int z = 30;
Point3D() {
this(100, 200, 300); //Point3D(int x, int y, int z) ํธ์ถ
}
Point3D(int x, int y, int z) {
super(x, y); // PointXY(int x, int y) ํธ์ถ
this.z = z;
}
}
/*
๊ฒฐ๊ณผ :
p3.x : 100
p3.y : 200
p3.z : 300
*/
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ถ์ํด๋์ค & ์ธํฐํ์ด์ค (0) | 2020.09.09 |
---|---|
๋คํ์ฑPolymorphism (0) | 2020.09.06 |
์ ์ด์Modifier (0) | 2020.09.06 |
๊ฐ์ฒด์งํฅ2 (0) | 2020.09.06 |
๊ฐ์ฒด์งํฅ1 (0) | 2020.09.06 |