μμ
μλ°μμ μμμ΄λ κΈ°μ‘΄μ ν΄λμ€λ₯Ό μ¬νμ©νμ¬ μλ‘μ΄ ν΄λμ€λ₯Ό μμ±νλ κΈ°λ²μ΄λ€.
λ κ°μ§μ ν΄λμ€λ₯Ό μμ ν΄λμ€μ νμ ν΄λμ€λ‘ λλμ΄ μμ ν΄λμ€μ λ©€λ²(νλ, λ©μλ, μ΄λ ν΄λμ€)λ₯Ό νμ ν΄λμ€μμ 곡μ ν μ μμΌλ©° λ ν΄λμ€λ₯Ό μμ κ΄κ³μ μλ€κ³ νλ€.
νμ ν΄λμ€λ μμ ν΄λμ€λ‘λΆν° νμ₯λ κ°λ μ΄κΈ° λλ¬Έμ νμ ν΄λμ€μ λ©€λ² κ°μλ μμ ν΄λμ€λ³΄λ€ νμ λ§κ±°λ κ°λ€.
ν΄λμ€λ₯Ό μμν λλ extends
ν€μλλ₯Ό μ¬μ©νλ©°, <νμ ν΄λμ€λͺ
> extends <μμ ν΄λμ€λͺ
>
μΌλ‘ μ μνλ€.
μμμ μ¬μ©νλ©΄ μμ ν΄λμ€μ μ€λ³΅λλ μ½λλ₯Ό μ€μΌ μ μλ€λ μ΄μ μ κ°λλ€.
μλ°μμλ λ¨μΌ μμλ§μ νμ©νλ©° μΈν°νμ΄μ€(interface)λΌλ λ¬Έλ² μμλ₯Ό ν΅ν΄ λ€μ€ μμκ³Ό λΉμ·ν κΈ°λ₯μ ꡬνν μ μλ€.
ν¬ν¨ κ΄κ³
ν¬ν¨ κ΄κ³λ μμμ²λΌ ν΄λμ€λ₯Ό μ¬μ¬μ©ν μ μλ λ°©λ²μΌλ‘ ν΄λΉ ν΄λμ€μ λ©€λ² λ³μλ‘ ν¬ν¨ν λ€λ₯Έ ν΄λμ€ νμ μ μ°Έμ‘° λ³μλ₯Ό μ μΈνλ κ²μ λ§νλ€.
public class Employee {
int id;
String name;
Position position;
public Employee(int id, String name, Position position) {
this.id = id;
this.name = name;
this.position = position;
}
void showInfo() {
System.out.println(id + " " + name);
System.out.println(position.team+ " " + position.job);
}
public static void main(String[] args) {
Position position1 = new Position("κ°λ°", "νμ₯");
Position position2 = new Position("μΈμ¬", "μ¬μ");
Employee e1 = new Employee(1, "κΉμ½λ©", position1);
Employee e2 = new Employee(2, "λ°μλ
", position2);
e1.showInfo();
e2.showInfo();
}
}
class Position {
String team, job;
public Position(String team, String job) {
this.team = team;
this.job = job;
}
}
// Output
1 κΉμ½λ©
κ°λ° νμ₯
2 λ°μλ
μΈμ¬ μ¬μ
μ μμλ₯Ό 보면, Employee
ν΄λμ€μ λ©€λ² λ³μλ‘ Position
ν΄λμ€ νμ
μ μ°Έμ‘° λ³μκ° μ μλμ΄ μλ€.
μλλ Position
ν΄λμ€μ μΈμ€ν΄μ€ λ³μμΈ team
κ³Ό job
μ Employee
μ ν΄λμ€ λ³μλ‘ μ μΈν΄μ€μΌ νμ§λ§ Position
ν΄λμ€λ‘ λ³μλ₯Ό λ¬Άμ΄μ μ μΈν΄μ€¬λ€. μ΄λ κ² ν¬ν¨ κ΄κ³λ₯Ό μ¬μ©νλ©΄ μ½λμ μ€λ³΅μ μ€μΌ μ μκ³ μ¬μ¬μ©ν μ μλ€.
ν¬ν¨? μμ?
μ¬κΈ°κΉμ§ 보면 ν¬ν¨ κ΄κ³μ μμ κ΄κ³λ μ μ¬ν κ² κ°λ€. μ΄λ»κ² νλ©΄ μ΄ λμ μ½κ² κ΅¬λΆ μ§μ μ μμκΉ!?
λμ κ΄κ³κ° ~μ ~μ κ°μ§κ³ μλ€.(HAS-A)λ©΄ ν¬ν¨ κ΄κ³μ΄κ³ <νμ ν΄λμ€>λ <μμ ν΄λμ€>μ΄λ€.(IS-A)λ©΄ μμ κ΄κ³λΌκ³ μκ°νλ©΄ νΈνλ€.
ν¬ν¨ : κ·Όλ‘μ(Employee
)λ μ§κΈ(Position
)μ κ°κ³ μλ€.
μμ : μ€ν¬μΈ μΉ΄(SportsCar
)λ μ°¨(Car
)λ€.
λ©μλ μ€λ²λΌμ΄λ©(Method Overriding)
λ©μλ μ€λ²λΌμ΄λ©μ μμ ν΄λμ€λ‘λΆν° μμλ°μ λ©μλμ κ°μ μ΄λ¦μ λ©μλλ₯Ό μ¬μ μνλ κ²μ΄λ€.
μ€λ²λΌμ΄λ©μ μ¬μ©ν λλ λ€μ μΈ κ°μ§ 쑰건μ λͺ¨λ λ§μ‘±ν΄μΌ νλ€.
- λ©μλ μ΄λ¦, 맀κ°λ³μ, λ°ν νμ μ΄ μμ ν΄λμ€μ μμ ν λκ°μμΌ νλ€.
- μ κ·Ό μ μ΄μμ λ²μκ° μμ ν΄λμ€μ κ°κ±°λ λμ΄μΌ νλ€.
- μμΈλ μμ ν΄λμ€μ λ©μλλ³΄λ€ λ§μ΄ μ μΈν μ μλ€.
superμ super()
super
ν€μλλ μμ ν΄λμ€μ κ°μ²΄λ₯Ό μλ―Ένλ€.
νμ ν΄λμ€μ μΈμ€ν΄μ€ λ³μλͺ
κ³Ό μμλ°μ μμ ν΄λμ€μ λ³μλͺ
μ΄ κ°μ λ super.λ³μλͺ
μ μ¬μ©νλ©΄ μμ ν΄λμ€μ λ³μλͺ
μ μ κ·Όν μ μλ€. λ§μ½ super
λ₯Ό λΆμ΄μ§ μλλ€λ©΄ ν΄λΉ κ°μ²΄λ μμ μ΄ μν μΈμ€ν΄μ€μ λ©€λ²λ₯Ό μ°Έμ‘°νκ² λλ€.
super()
λ μμ ν΄λμ€μ μμ±μλ₯Ό νΈμΆνλ λ©μλλ‘ this()
μ λ§μ°¬κ°μ§λ‘ μμ±μ μμμλ§ μ¬μ©ν μ μμΌλ©° 첫 μ€μ μμ±ν΄μΌ νλ€.
λ§μ½ super()
κ° μλ κ²½μ°μλ μ»΄νμΌλ¬κ° μλμΌλ‘ μμ±μμ 첫 μ€μ μμ±ν΄μ£Όκ³ λ§μ½ μμ ν΄λμ€μ κΈ°λ³Έ μμ±μκ° μλ κ²½μ° μλ¬κ° λ°μνλ€. λ°λΌμ ν΄λμ€λ₯Ό λ§λ€ λ κΈ°λ³Έ μμ±μλ₯Ό μμ±νλ μ΅κ΄μ κ°λ κ² μ’λ€.
Object ν΄λμ€
Object
ν΄λμ€λ μλ° ν΄λμ€ μ€ μ΅μμμ μμΉν ν΄λμ€λ‘ μ»΄νμΌλ¬λ μλ¬΄λ° μμμ λ°μ§ μλ ν΄λμ€μ μλμΌλ‘ extends Object
λ₯Ό μΆκ°νμ¬ Object
ν΄λμ€λ₯Ό μμλ°λλ‘ ν΄μ€λ€. λ°λΌμ λͺ¨λ μλ° ν΄λμ€λ Object
ν΄λμ€μ λ©€λ²λ€μ μ¬μ©ν μ μλ€.
Object ν΄λμ€μ λνμ μΈ λ©μλλ λ€μκ³Ό κ°λ€.
toString()
: λ¬Έμμ΄λ‘ μΆλ ₯equals(Object obj)
:==
μ λμΌν μ°μ°μΌλ‘ μ€ν λ©λͺ¨λ¦¬κ°μ λΉκ΅wait()
: νμ¬ μ€λ λ μΌμμ μ§notify()
: μΌμμ μ§ μ€μΈ μ€λ λ λ€μ μ€ν
'π Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μΆμν(Abstraction) (1) | 2022.09.07 |
---|---|
[Java] λ€νμ±(Polymorphism) (0) | 2022.09.07 |
[Java] μΊ‘μν π (0) | 2022.09.06 |
[Java] μμ±μμ λ΄λΆ ν΄λμ€ (4) | 2022.09.05 |
[Java] νλμ λ©μλ μ€λ²λ‘λ© (0) | 2022.09.02 |