Chapter 07 - κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° 2
μμ
μμμ μ μμ μ₯μ
μμμ κΈ°μ‘΄μ ν΄λμ€λ₯Ό μ¬μ¬μ©νμ¬ μλ‘μ΄ ν΄λμ€λ₯Ό μμ±νλ κ²
- μ½λλ₯Ό 곡ν΅μ μΌλ‘ κ΄λ¦¬ν μ μμ
- μ¬μ¬μ©μ±μ λμ
- μμ±μμ μ΄κΈ°ν λΈλμ μμλμ§ μμ, λ©€λ²λ§ μμ
μ’ λ₯
- μ‘°μ ν΄λμ€ : λΆλͺ¨ ν΄λμ€, μμ ν΄λμ€, κΈ°λ° ν΄λμ€
- μμ ν΄λμ€ : μμ ν΄λμ€, νμ ν΄λμ€, νμλ ν΄λμ€
- μμ ν΄λμ€μ λ©€λ² κ°μλ μ‘°μ ν΄λμ€λ³΄λ€ νμ κ°κ±°λ λ§μ
- μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±νλ©΄ μ‘°μ ν΄λμ€μ λ©€λ²μ μμ ν΄λμ€μ λ©€λ²κ° ν©μ³μ§ νλμ μΈμ€ν΄μ€λ‘ μμ±
ν΄λμ€ κ°μ κ΄κ³ - ν¬ν¨κ΄κ³
- νλμ ν΄λμ€λ₯Ό 미리 μμ±ν΄ λκ³ κ·Έκ²μ λ€λ₯Έ ν΄λμ€μ λ©€λ² λ³μλ‘ μ μΈνμ¬ ν¬ν¨κ΄κ³λ₯Ό λ§Ίμ μ μμ
- ν΄λμ€λ₯Ό μμ±νλ κ²λ μ¬μμ§κ³ μ½λλ κ°κ²°ν΄μ§, μ½λ κ΄λ¦¬μ μμ
- λ€λ₯Έ ν΄λμ€μλ μ¬μ¬μ© κ°λ₯
ν΄λμ€ κ°μ κ΄κ³ κ²°μ νκΈ°
- ~μ ~μ΄λ€. => is a κ΄κ³λ
μμκ΄κ³
- ex) νμμ μμ΄λ€.
- ~μ ~μ κ°μ§κ³ μλ€ => has a κ΄κ³λ
ν¬ν¨κ΄κ³
- ex) μμ μ μ κ°μ§κ³ μλ€.
λ¨μΌ μμ
- μλ°μμλ μ€μ§ λ¨μΌ μμλ§μ νμ©
- λ κ° μ΄μ μμ μ μ μΈλΆ(μ΄λ¦κ³Ό 맀κ°λ³μ)κ° κ°μΌλ©΄ ꡬλ³νκΈ° μ΄λ €μ
- νλλ μ‘°μ ν΄λμ€λ‘, νλλ ν΄λμ€ λ΄λΆμμ μΈμ€ν΄μ€λ‘ μμ± ν μ¬μ©νλ λ°©μμΌλ‘ λ¨μΌ μμμ νκ³λ₯Ό ν΄κ²°
Objectν΄λμ€ - λͺ¨λ ν΄λμ€μ μ‘°μ
- Objectν΄λμ€λ λͺ¨λ ν΄λμ€ μμκ³μΈ΅λμ μ΅μμμ μλ μ‘°μ ν΄λμ€
- μμμ λ°μ§ μλ ν΄λμ€λ μ»΄νμΌλ¬κ° μλμΌλ‘
extends Object
μΆκ° - λͺ¨λ μ‘°μ ν΄λμ€μ μ΅μμ ν΄λμ€λ‘ μ¬λΌκ°λ©΄ Object
μ€λ²λΌμ΄λ©(overriding)
μ€λ²λΌμ΄λ©μ΄λ?
μ‘°μ ν΄λμ€λ‘λΆν° μμλ°μ λ©μλμ λ΄μ©μ λ³κ²½νλ κ²
- μλ‘μ΄ λ©μλλ₯Ό μ 곡νλ κ²λ³΄λ€ μ¬μ©μκ° κΈ°λνκ³ μλ λ©μλ μ μΈμΌλ‘ μ€λ²λΌμ΄λ©μ νλ κ²μ΄ λ°λ₯Έ μ ν
μ€λ²λΌμ΄λ©μ 쑰건
- μ΄λ¦μ΄ κ°μμΌ ν¨
- 맀κ°λ³μκ° κ°μμΌ ν¨
- λ°ν νμ
μ΄ κ°μμΌ ν¨
- JDK1.5μ κ³΅λ³ λ°ννμ μΆκ°λ‘ μΈν΄ λ°ννμ μ μμ ν΄λμ€μ νμ μΌλ‘ λ³κ²½ κ°λ₯ν΄μ§
- μ κ·Ό μ μ΄μλ μ‘°μ ν΄λμ€μ λ©μλλ³΄λ€ μ’μ λ²μλ‘ λ³κ²½ λΆκ°λ₯
- μ‘°μ ν΄λμ€μ λ©μλλ³΄λ€ λ§μ μμ μμΈλ₯Ό μ μΈν μ μμ
- μ‘°μ ν΄λμ€ λ©μλμ μμΈμ μ‘°μμΈ μμΈλ μ μΈ λΆκ°λ₯
- μΈμ€ν΄μ€ λ©μλλ₯Ό staticλ©μλλ‘ λ³κ²½νκ±°λ κ·Έ λ°λμ λ³κ²½λ λΆκ°λ₯
- μ‘°μ ν΄λμ€μ static λ©μλλ₯Ό μμ ν΄λμ€μμ λκ°μ μ μΈλΆμ static λ©μλλ‘ μ μνλ κ²μ μ€λ²λΌμ΄λ©μ΄ μλ
- ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Όν κ²μμΌλ‘
μ€λ²λ‘λ© vs μ€λ²λΌμ΄λ©
μ€λ²λ‘λ© : κΈ°μ‘΄μ μλ μλ‘μ΄ λ©μλλ₯Ό μ μ(new)
μ€λ²λΌμ΄λ© : μμλ°μ λ©μλμ λ΄μ©μ λ³κ²½νλ κ²(change, modify)
super
- superλ μμ ν΄λμ€μμ μ‘°μ ν΄λμ€λ‘λΆν° μμλ°μ λ©€λ²λ₯Ό μ°Έμ‘°νλ λ° μ¬μ©νλ μ°Έμ‘° λ³μ
- μ‘°μ ν΄λμ€μ λ©€λ²μ μλ‘ κ΅¬λ³ν΄μΌ ν λ μ¬μ©νλ κ²μ΄ μ’μ
- super μμ thisμ λ§μ°¬κ°μ§λ‘ static λ©μλμμ μ¬μ© λΆκ°λ₯
super() - μ‘°μ ν΄λμ€μ μμ±μ
- Object ν΄λμ€λ₯Ό μ μΈν λͺ¨λ ν΄λμ€μ μμ±μ 첫 μ€μ this() λλ super()λ₯Ό νΈμΆν΄μΌ ν¨
- κ·Έλ μ§ μλ€λ©΄ μ»΄νμΌλ¬κ° μλμΌλ‘
super();
λ₯Ό μμ±μμ 첫 μ€μ μ½μ - μμ±μμ super()λ₯Ό μ μΈν λ μ‘°μ ν΄λμ€μ λ©€λ² λ³μκ° λ¨Όμ μ‘°μμ μμ±μλ‘ μΈν΄ μ΄κΈ°νλ μ μλλ‘ μ μ€μ μ μΈ
packageμ import
ν¨ν€μ§
- ν¨ν€μ§λ ν΄λμ€(.class)μ λ¬Άμ
- ν΄λμ€μ μ€μ μ΄λ¦μ ν¨ν€μ§λͺ μ ν¬ν¨
- 물리μ μΌλ‘λ νλμ λλ ν 리
- νλμ μμ€νμΌμ 첫 λ²μ§Έ λ¬Έμ₯μΌλ‘ λ¨ ν λ²μ ν¨ν€μ§ μ μΈλ§μ νμ©
- λͺ¨λ ν΄λμ€λ λ°λμ νλμ ν¨ν€μ§μ μν΄μΌ ν¨
- ν¨ν€μ§λ
.
μ ꡬλΆμλ‘ κ³μΈ΅κ΅¬μ‘° ꡬμ±
ν¨ν€μ§μ μ μΈ
import ν¨ν€μ§λͺ ;
- μμ€νμΌμ 첫 λ²μ§Έ λ¬Έμ₯μ΄μ΄μΌ ν¨
- μμ€νμΌμ λ¨ ν λ² μ μΈ
- ν΄λμ€μ ꡬλΆνκΈ° μν΄ ν¨ν€μ§λͺ μ μλ¬Έμλ₯Ό μ¬μ©νλ κ²μ΄ μμΉ
- μμ€νμΌμ μμ μ΄ μν ν¨ν€μ§λ₯Ό μ§μ νμ§ μμ ν΄λμ€λ
μ΄λ¦ μλ ν¨ν€μ§
μ μνκ² λ¨ -d
μ΅μ μ μ§μ λ κ²½λ‘λ₯Ό ν΅ν΄ ν¨ν€μ§μ μμΉλ₯Ό μ°Ύμμ ν΄λμ€ νμΌμ μμ±-cp
μ΅μ μ μΌμμ μΌλ‘ ν΄λμ€ ν¨μ€ μ§μ κ°λ₯
import문
- ν΄λμ€μ μΌμΌμ΄ ν¨ν€μ§λͺ μ λΆμ¬μ μ¬μ©νκΈ° λΆνΈνκΈ° λλ¬Έμ importλ¬Έ μ¬μ©
- importλ¬Έμ΄ μ»΄νμΌλ¬μκ² μμ€νμΌμ μ¬μ©λ ν΄λμ€μ ν¨ν€μ§ μ 보λ₯Ό μ 곡
- ideμμ λ¨μΆν€λ‘λ νΈνκ² μ κ·Όν μ μλλ‘ μ 곡
importλ¬Έμ μ μΈ
- μΌλ°μ μΈ μμ€νμΌμ ꡬμ±
- package문
- import문
- ν΄λμ€ μ μΈ
- μ μΈ λ°©λ²
- import ν¨ν€μ§λͺ .ν΄λμ€λͺ ;
- import ν¨ν€μ§λͺ .*;
ν΄λμ€λͺ .*
μ νμ ν΄λμ€λ₯Ό ν¬ν¨νλ κ², νμ ν¨ν€μ§μ ν΄λμ€κΉμ§ ν¬ν¨ xν΄λμ€λͺ .*
μ μ»΄νμΌλ¬κ° ν΄λΉ ν¨ν€μ§μμ μΌμΉνλ ν΄λμ€ μ΄λ¦μ μ°ΎμμΌ νλ μκ³ κ° λλ κ², μ±λ₯μ μ°¨μ΄ x
static import문
static λ©€λ²λ₯Ό νΈμΆν λ ν΄λμ€λ₯Ό μλ΅ν μ μμ
- μ½λκ° κ°κ²°ν΄μ§
- νΉμ ν΄λμ€μ static λ©€λ²λ₯Ό μμ£Ό μ¬μ©ν λ νΈλ¦¬
μ μ΄μ(modifier)
μ μ΄μλ?
- ν΄λμ€, λ³μ, λ©μλμ μ μΈλΆμ ν¨κ» μ¬μ©λμ΄ λΆκ°μ μΈ μλ―Έλ₯Ό λΆμ¬
- μ κ·Όμ μ΄μ : public, protected, default, private
- κ·Έ μΈ : static, final, abstact, native, transient, synchronized, volatile, strictfp
- μ κ·Ό μ μ΄μλ ν λ²μ νλλ§ μ νν΄μ μ¬μ©, λλ¨Έμ§λ μ¬λ¬ μ μ΄μλ₯Ό μ‘°ν©ν΄μ μ¬μ©νλ κ²μ΄ κ°λ₯
static - ν΄λμ€μ, 곡ν΅μ μΈ
- ν΄λμ€ λ³μλ μΈμ€ν΄μ€μ κ΄κ³μμ΄ κ°μ κ°
- staticμ΄ λΆμΌλ©΄ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ λ μ¬μ© κ°λ₯
- μΈμ€ν΄μ€ λ©μλμ static λ©μλμ μ°¨μ΄λ λ©μλ λ΄μμ μΈμ€ν΄μ€ λ©€λ²λ₯Ό μ¬μ©νλμ μ¬λΆ
- λ©€λ² λ³μ, λ©μλ, μ΄κΈ°ν λΈλμ staticμ΄ μ¬μ©λ μ μμ
- static λ©€λ² λ³μ
- λͺ¨λ μΈμ€ν΄μ€μ 곡ν΅μ μΌλ‘ μ¬μ©λλ ν΄λμ€ λ³μ
- μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ λ μ¬μ© κ°λ₯
- ν΄λμ€κ° λ©λͺ¨λ¦¬μ λ‘λλ λ μμ±
- static λ©μλ
- μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ λ νΈμΆμ΄ κ°λ₯
- static λ©μλ λ΄μμλ μΈμ€ν΄μ€ λ©€λ²λ€μ μ§μ μ¬μ© λΆκ°λ₯
final - λ§μ§λ§μ, λ³κ²½λ μ μλ
- μ¬μ©λ μ μλ κ³³
- ν΄λμ€, λ©μλ, λ©€λ² λ³μ, μ§μλ³μ
- final ν΄λμ€
- νμ₯λ μ μλ ν΄λμ€
- λ€λ₯Έ ν΄λμ€μ μ‘°μμ΄ λ μ X
- final λ©μλ
- λ³κ²½ν μ μλ λ©μλ
- μ€λ²λΌμ΄λ©μ ν΅ν΄ μ¬μ μ λ μ μμ
- final λ©€λ² λ³μ, μ§μλ³μ
- κ°μ λ³κ²½ν μ μλ μμ
- final μΈμ€ν΄μ€ λ³μμ κ²½μ° μμ±μμμ μ΄κΈ°νν μ μμ
abstract - μΆμμ λ―Έμμ±μ
- λ©μλμ μ μΈλΆλ§ μμ±νκ³ μ€μ ꡬννμ§ μμ μΆμ λ©μλλ₯Ό μ μΈνλ λ° μ¬μ©
- μ¬μ©λ μ μλ κ³³
- ν΄λμ€ -> ν΄λμ€ λ΄μ μΆμ λ©μλκ° μ μΈλμ΄ μμμ μλ―Έ
- λ©μλ -> μ μΈλΆλ§ μμ±νκ³ κ΅¬νλΆλ μμ±νμ§ μμ μΆμ λ©μλμμ μλ―Έ
- μΆμ λ©μλκ° μλ κ²½μ°μλ abstract ν΄λμ€μΈ κ²½μ°κ° μμ
- μμ ν μνλ λ©μλλ§ μ€λ²λΌμ΄λ© νκΈ° μν¨
- μΆμ ν΄λμ€λ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.
μ κ·Ό μ μ΄μ(access modifier)
- ν΄λΉνλ λ©€λ² λλ ν΄λμ€λ₯Ό μΈλΆμμ μ κ·Όνμ§ λͺ»νλλ‘ μ ν
- ν΄λμ€, λ©€λ² λ³μ, λ©μλ, μμ±μμμ μ¬μ© κ°λ₯
- μ’
λ₯
- private : κ°μ ν΄λμ€ λ΄μμλ§ μ κ·Ό
- default : κ°μ ν¨ν€μ§ λ΄μμλ§ μ κ·Ό
- protected : κ°μ ν¨ν€μ§ λ΄ & λ€λ₯Έ ν¨ν€μ§μ μμ ν΄λμ€μμ μ κ·Ό
- public : μ κ·Ό μ ν X
- μ κ·Ό λ²μ : public > protected > (default) > private
- μ¬μ© κ°λ₯ν μ κ·Ό μ μ΄μ
- ν΄λμ€ : public, (default)
- λ©μλ, λ©€λ² λ³μ : public, protected, (default), private
- μ§μλ³μ : μμ
- μ κ·Ό μ μ΄μλ₯Ό μ΄μ©ν μΊ‘μν
- μΈλΆλ‘λΆν° λ°μ΄ν°λ₯Ό 보νΈνκΈ° μν΄μ
- μΈλΆμλ λΆνμν λ΄λΆμ μΌλ‘λ§ μ¬μ©λλ λΆλΆμ κ°μΆκΈ° μν΄μ
- λ³΄ν΅ λ©€λ² λ³μλ₯Ό private(μμμ΄ μμλ μ protected)λ‘ μ μΈ ν public getterμ setterλ₯Ό μ¬μ©
- μμ±μμ μ κ·Ό μ μ΄μ
- private μ κ·Ό μ μ΄μλ‘ μ§μ μΈμ€ν΄μ€λ₯Ό μμ± λͺ»νκ² ν λ€ public λ©μλλ₯Ό ν΅ν΄ μΈμ€ν΄μ€μ μ κ·Όν μ μλλ‘ μ ν κ°λ₯
- μμ±μκ° privateμΈ ν΄λμ€λ λ€λ₯Έ ν΄λμ€μ μ‘°μμ΄ λ μ μμ (μ‘°μ ν΄λμ€μ μμ±μ νΈμΆμ΄ λΆκ°λ₯νλ―λ‘)
μ μ΄μμ μ‘°ν©
- λ©μλμ staticκ³Ό abstactλ ν¨κ» μ¬μ©ν μ μμ
- ν΄λμ€μ abstractκ³Ό finalμ λμμ μ¬μ©ν μ μμ
- abstract λ©μλμ μ κ·Ό μ μ΄μκ° privateμΌ μ μμ
- μμ ν΄λμ€μμ ꡬνν΄ μ€μΌ νκΈ° λλ¬Έ
- λ©μλμ privateκ³Ό finalμ κ°μ΄ μ¬μ©ν νμλ μμ
λ€νμ±
λ€νμ±μ΄λ?
- κ°μ²΄μ§ν₯μμ λ€νμ±μ΄λ
μ¬λ¬ κ°μ§ ννλ₯Ό κ°μ§ μ μλ λ₯λ ₯
μ μλ―Έ- ꡬ체μ μΌλ‘ μ‘°μ ν΄λμ€ νμ μ μ°Έμ‘° λ³μλ‘ μμ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μλλ‘ ν κ²
- μ°Έμ‘° λ³μμ νμ μ λ°λΌ μ¬μ©ν μ μλ λ©€λ²μ κ°μκ° λ¬λΌμ§
- μ°Έμ‘° λ³μκ° μ¬μ©ν μ μλ λ©€λ²μ κ°μλ μΈμ€ν΄μ€μ λ©€λ² κ°μλ³΄λ€ κ°κ±°λ μ μ΄μΌ ν¨
- μ‘°μ νμ μ μ°Έμ‘° λ³μλ‘ μμ νμ μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μμ
- μμ νμ μ μ°Έμ‘° λ³μλ‘ μ‘°μ νμ μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μμ
μ°Έμ‘° λ³μμ ν λ³ν
- μμ νμ
μμ μ‘°μ νμ
μ μ
μΊμ€ν
: ν λ³ν μλ΅ κ°λ₯
- μ°Έμ‘° λ³μκ° λ€λ₯Ό μ μλ λ©€λ²μ κ°μκ° μ€μ μΈμ€ν΄μ€κ° κ°κ³ μλ λ©€λ²μ κ°μλ³΄λ€ μ μ κ²μ΄ λΆλͺ νλ―λ‘ μλ΅ κ°λ₯
- μ‘°μ νμ μμ μμ νμ μ λ€μ΄ μΊμ€ν : νλ³ν μλ΅ λΆκ°
- μ°Έμ‘° λ³μμ ν λ³νμ μ°Έμ‘° λ³μμ νμ
μ λ³κ²½νλ κ²μ΄λ―λ‘ μ€μ μΈμ€ν΄μ€μ μν₯μ λ―ΈμΉμ§ μμ
- λ¨μ§ μ°Έμ‘° λ³μμ ν λ³νμ ν΅ν΄ μ°Έμ‘°νκ³ μλ μΈμ€ν΄μ€μμ μ¬μ©ν μ μλ λ©€λ²μ λ²μμ κ°μλ₯Ό μ‘°μ νλ κ²
- μ‘°μ νμ μ μ°Έμ‘° λ³μκ° μ‘°μ νμ μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νκ³ μμ λ μμνμ μ μ°Έμ‘°λ³μλ‘ ν λ³ννλ©΄ μλ¬ λ°μ
Car car = new Car();
FireEngine fe = null;
// fe = (FireEngine)car; => μ€λ₯ λ°μ!
μ‘°μ νμ μ΄ μμ νμ μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νκ³ μμ λλ λ€μ΄ μΊμ€ν μ΄ κ°λ₯νλ€.
Car car = null;
FireEngine fe = new FireEngin();
car = fe;
FireEngine fe2 = null;
fe2 = (FireEngine)car;
// μ€λ₯ λ°μ X
- μλ‘ μμκ΄κ³μ μλ νμ κ°μ νλ³νμ μλ°©ν₯μΌλ‘ μμ λ‘κ² μ§νλ μ μμΌλ, μ°Έμ‘° λ³μκ° κ°λ¦¬ν€λ μΈμ€ν΄μ€μ μμ νμ μΌλ‘ νλ³νμ νμ© X
- μ°Έμ‘° λ³μκ° κ°λ¦¬ν€λ μΈμ€ν΄μ€μ νμ μ΄ λ¬΄μμΈμ§ νμΈνλ κ²μ΄ μ€μ
instanceofμ°μ°μ
- μ°Έμ‘° λ³μκ° κ°λ¦¬ν€λ μΈμ€ν΄μ€μ μ€μ νμ μ μμ보기 μν΄ μ¬μ©
- instanceofμ μΌμͺ½μ μ°Έμ‘° λ³μ, μ€λ₯Έμͺ½μ νμ (ν΄λμ€λͺ ) νΌμ°μ°μ
- booleanκ°μ λ°νν¨
- μ€μ instanceof μ°μ° μ΄μΈμ μ‘°μ νμ μ instanceofμλ trueλ₯Ό λ°ν
- κ·Έλ¬λ―λ‘ trueλΌλ κ²μ κ²μ¬ν νμ μΌλ‘ νλ³νμ΄ κ°λ₯νλ€λ μλ―Έ
μ°Έμ‘° λ³μμ μΈμ€ν΄μ€μ μ°κ²°
- λ©€λ² λ³μμ κ²½μ°μ μ°Έμ‘° λ³μμ νμ
μ λ°λΌ λ¬λΌμ§
- μ‘°μ ν΄λμ€μ μμ ν΄λμ€μ μ€λ³΅μΌλ‘ μ μλ κ²½μ°λ μ‘°μ νμ μ μ°Έμ‘° λ³μλ μ‘°μ ν΄λμ€ λ©€λ² λ³μ, μμ νμ μ μ°Έμ‘° λ³μλ μμ ν΄λμ€ λ©€λ² λ³μ
- μ€λ³΅ μ μλμ§ μμ κ²½μ°λ μ°Έμ‘° λ³μμ λ°λ₯Έ μ°¨μ΄κ° μλ€.
- superμ thisλ‘ μΈμ€ν΄μ€ λ³μλ₯Ό ꡬλΆν΄μλ μ¬μ© κ°λ₯
- λ©€λ² λ³μλ€μ μ£Όλ‘ privateμ΄κΈ° λλ¬Έμ μ μ¬μ©λμ§λ μμ
맀κ°λ³μμ λ€νμ±
ν΄λμ€λ§λ€ λμΌν λ‘μ§μ λ©μλλ₯Ό λ§λ€κΈ°λ³΄λ¨ 곡ν΅μ μμ ν΄λμ€λ₯Ό extendsνκ² ν λ€ λ€νμ±μ μ΄μ©ν΄μ νλμ λ©μλλ‘ κ΅¬ν
- λ€λ₯Έ μ νμ΄ μΆκ°λ λλ κ°μ μ‘°μ ν΄λμ€λ₯Ό μμλ°κ² νλ©΄ λλ€.
- Object κ°μ²΄λ₯Ό 맀κ°λ³μλ‘ λ°λ λ©μλμ κ²½μ°μ λͺ¨λ νμ μ μΈμ€ν΄μ€λ₯Ό λ°μ μ μλ€.
μ¬λ¬ μ’ λ₯μ κ°μ²΄λ₯Ό λ°°μ΄λ‘ λ€λ£¨κΈ°
μ‘°μ νμ μ μ°Έμ‘° λ³μ λ°°μ΄μ μ¬μ©νλ©΄, 곡ν΅μ μ‘°μμ κ°μ§ μλ‘ λ€λ₯Έ μ’ λ₯μ κ°μ²΄λ₯Ό λ°°μ΄λ‘ λ¬Άμ΄μ λ€λ£° μ μμ
- μμ λ‘λ Object νμ μ λ°°μ΄μ κ°κ³ μλ Vector ν΄λμ€κ° μμ (λμ μΌλ‘ ν¬κΈ°κ° κ΄λ¦¬λλ κ°μ²΄ λ°°μ΄)
μΆμν΄λμ€
μΆμν΄λμ€λ?
- μΆμν΄λμ€λ λ―Έμμ± μ€κ³λ
- μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμ
- μλ‘μ΄ ν΄λμ€λ₯Ό μμ±νλ λ° μμ΄μ λ°νμ΄ λλ μ‘°μ ν΄λμ€μ μν
- ν€μλ
abstract
λ₯Ό λΆμ
μΆμλ©μλ(abstract method)
- λ©μλλ μ μΈλΆμ ꡬνλΆ(λͺΈν΅)μΌλ‘ ꡬν -> μΆμ λ©μλλ μ μΈλΆλ§ μμ±, ꡬνλΆλ μμ± X
- abstract 리ν΄νμ λ©μλλͺ ();
- μ‘°μμΌλ‘λΆν° μμλ°μ μΆμλ©μλ μ€ νλλΌλ ꡬννμ§ μλλ€λ©΄, μμ ν΄λμ€ μμ μΆμ ν΄λμ€
μΆμν΄λμ€μ μμ±
- μΆμν : ν΄λμ€ κ°μ 곡ν΅μ μ μ°Ύμλ΄μ 곡ν΅μ μ‘°μμ λ§λλ μμ
- ꡬ체ν : μμμ ν΅ν΄ ν΄λμ€λ₯Ό ꡬν, νμ₯νλ μμ
- abstractλ₯Ό λΆμ¬μ μΆμλ©μλλ‘ μ μΈνλ μ΄μ λ μμ ν΄λμ€μμ μΆμλ©μλλ₯Ό λ°λμ ꡬννλλ‘ κ°μ
- κ³΅ν΅ μ‘°μμΈ μΆμ ν΄λμ€λ₯Ό μ΄μ©ν΄μ μ°Έμ‘° λ³μ λ°°μ΄ λ±μ μλ‘ λ€λ₯Έ μ’ λ₯μ μΈμ€ν΄μ€λ₯Ό νλμ λ¬ΆμμΌλ‘λ λ€λ£° μ μμ
μΈν°νμ΄μ€(interface)
μΈν°νμ΄μ€λ?
μΌμ’ μ μΆμν ν΄λμ€
- μΆμν΄λμ€λ³΄λ€ μΆμν μ λκ° λμμ λͺΈν΅μ κ°μΆ μΌλ° λ©μλλ λ©€λ² λ³μλ₯Ό ꡬμ±μμΌλ‘ κ°μ§ μ μμ
- μΆμν΄λμ€κ° λ―Έμμ± μ€κ³λλΌλ©΄ μΈν°νμ΄μ€λ κΈ°λ³Έ μ€κ³λ
- λ€λ₯Έ ν΄λμ€λ₯Ό μμ±νλ λ° λμμ μ€ λͺ©μ μΌλ‘ μμ±
μΈν°νμ΄μ€μ μμ±
- ν€μλλ‘ class λμ interface
- μ κ·Ό μ μ΄μλ‘ publicκ³Ό default μ¬μ© κ°λ₯
- λͺ¨λ λ©€λ² λ³μλ public static finalμ΄λ©° μ΄λ₯Ό μλ΅ κ°λ₯
- λͺ¨λ λ©μλλ public abstractμ΄λ©° μλ΅ κ°λ₯
- JDK1.8λΆν° staticλ©μλμ default λ©μλλ μμΈ
μΈν°νμ΄μ€μ μμ
- μΈν°νμ΄μ€λ μΈν°νμ΄μ€λ‘λΆν°λ§ μμλ°μ μ μμ
- μΈν°νμ΄μ€λ λ€μ€ μμμ΄ κ°λ₯
μΈν°νμ΄μ€μ ꡬν
- μμλ°λ ν΄λμ€μ ν¬κ² λ€λ₯Ό 건 μμ§λ§
implements
λ₯Ό μ¬μ© - μΈν°νμ΄μ€ λ©μλ μΌλΆλ§ ꡬννλ ν΄λμ€λ abstractλ₯Ό λΆμ¬μ μΆμν΄λμ€λ‘ μ μΈ
- μμκ³Ό ꡬνμ λμμ ν μ μμ
- μΈν°νμ΄μ€λ 보ν΅
~ν μ μλ€.
λ μλ―Έμable
λ‘ λλλ μ΄λ¦ μ¬μ©
μΈν°νμ΄μ€λ₯Ό μ΄μ©ν λ€μ€ μμ
- μΈν°νμ΄μ€λ static μμλ§ μ μν μ μμΌλ―λ‘ μΆ©λμ΄ μ κ³ ν΄λμ€ μ΄λ¦μΌλ‘ κ΅¬λΆ κ°λ₯
- λ κ°μ ν΄λμ€λ‘λΆν° μμμ λ°μμΌ νλ μν©μμ λΉμ€μ΄ λμ μͺ½μ μ ν ν λ€λ₯Έ μͺ½μ ν΄λμ€ λ΄λΆμ λ©€λ²λ‘ ν¬ν¨ μν€λ λ°©μμΌλ‘ ꡬν
- μ΄λ μΈν°νμ΄μ€λ₯Ό μλ‘ μμ±νμ¬ λ€νμ νΉμ±μ μ΄μ©ν μ μμ
μΈν°νμ΄μ€λ₯Ό μ΄μ©ν λ€νμ±
- μΈν°νμ΄μ€λ μ΄λ₯Ό ꡬνν ν΄λμ€μ μ‘°μ
- ν΄λΉ μΈν°νμ΄μ€ νμ μ μ°Έμ‘° λ³μλ‘ μ΄λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€ μ°Έμ‘° κ°λ₯
- μΈν°νμ΄μ€ νμ μΌλ‘μ νλ³νλ κ°λ₯
- μΈν°νμ΄μ€λ 맀κ°λ³μμ νμ μΌλ‘λ μ¬μ©λ μ μμ
- λ¦¬ν΄ νμ μΌλ‘ μΈν°νμ΄μ€μ νμ μ μ§μ νλ κ² μμ κ°λ₯(ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ°ν)
μΈν°νμ΄μ€μ μ₯μ
κ°λ° μκ°μ λ¨μΆμν¬ μ μμ
- νΈμΆνλ μͺ½μμλ μ μΈλΆλ§ μλ©΄ μμ κ°λ₯
- λ€λ₯Έ νμͺ½μμ ꡬννλ ν΄λμ€λ₯Ό μμ±
νμ€νκ° κ°λ₯
- κ°λ°μλ€μκ² μΈν°νμ΄μ€λ₯Ό ꡬννμ¬ νλ‘κ·Έλ¨μ κΈ°λ³Έ νμ μμ±νλλ‘ ν¨
- μ ννλ νλ‘κ·Έλ¨μ κ°λ°μ΄ κ°λ₯
μλ‘ κ΄κ³μλ ν΄λμ€λ€μκ² κ΄κ³λ₯Ό λ§Ίμ΄ μ€ μ μμ
- νλμ μΈν°νμ΄μ€λ₯Ό 곡ν΅μ μΌλ‘ ꡬννκ² νλ©΄μ κ΄κ³λ₯Ό λ§Ίμ΄μ€ μ μμ
λ 립μ μΈ νλ‘κ·Έλλ°μ΄ κ°λ₯
- μ μΈκ³Ό ꡬνμ μΈν°νμ΄μ€λ‘ λΆλ¦¬ κ°λ₯
- ν΄λμ€μ ν΄λμ€ κ°μ κ΄κ³λ₯Ό μ§μ μ μΈ κ΄κ³μμ κ°μ μ μΈ κ΄κ³λ‘ λ³κ²½
μΈν°νμ΄μ€μ μ΄ν΄
- μΌλ ν΄μΌ ν κ²
- ν΄λμ€λ₯Ό μ¬μ©νλ μͺ½κ³Ό μ 곡νλ μͺ½μ΄ μμ
- λ©μλλ₯Ό μ¬μ©νλ μͺ½μ μ¬μ©νλ €λ λ©μλμ μ μΈλΆλ§ μλ©΄ λ¨
- μ§μ μ μΈ κ΄κ³μΈ ν΄λμ€ λ κ°λ₯Ό ν μͺ½μ μΈν°νμ΄μ€λ₯Ό ꡬννκ³ ν μͺ½μ μΈν°νμ΄μ€λ₯Ό μ¬μ©νκ² μμ±
- λ ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό 맀κ°μ²΄λ‘ κ°μ μ μΌλ‘ κ΄κ³κ° λ³κ²½λ¨
- μ¬μ©νλ μͺ½μ ꡬνλ μͺ½μ μν₯μ λ°μ§ μκ³ κ΅¬νλ ν΄λμ€μ μ΄λ¦μ λͺ°λΌλ, μμ§ κ΅¬νμ΄ μ λμ΄μμ΄λ λ¬Έμ κ° λμ§ μμ
λν΄νΈ λ©μλμ static λ©μλ
- JDK 1.8λΆν° μΆμ λ©μλ μΈμ λν΄νΈ λ©μλμ static λ©μλκ° μΆκ°
- static λ©μλ
- java.util.Collectionsκ° μμ (static λ©μλκ° κ΅¬νλκΈ° μ μ΄λΌ λ§λ€μ΄μ§)
- μ κ·Ό μ μ΄μλ public, μλ΅ κ°λ₯
- λν΄νΈ λ©μλ
- μΆμ λ©μλκ° μλ (μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ€μκ² μν₯μ λ―ΈμΉμ§ μμ)
- μ κ·Ό μ μ΄μλ public, μλ΅ κ°λ₯
- μ‘°μ ν΄λμ€μ λ©μλμ μΆ©λ μ λν΄νΈ λ©μλλ 무μλκ³ μ‘°μ ν΄λμ€μ λ©μλκ° μμ
- μ¬λ¬ μΈν°νμ΄μ€ λν΄νΈ λ©μλ κ°μ μΆ©λμ ꡬνν ν΄λμ€μμ λν΄νΈ λ©μλλ₯Ό μ€λ²λΌμ΄λ©ν΄μΌ ν¨
λ΄λΆ ν΄λμ€(inner class)
λ΄λΆ ν΄λμ€λ?
- ν΄λμ€ λ΄μ μ μΈλ ν΄λμ€
- μ₯μ
- λ΄λΆ ν΄λμ€μμ μΈλΆ ν΄λμ€μ λ©€λ²λ€μ μ½κ² μ κ·Ό
- μ½λμ 볡μ‘μ±μ μ€μΌ μ μμ (μΊ‘μν)
- κ°μΈκ³ μλ ν΄λμ€λ
μΈλΆ ν΄λμ€
, μμ μλ ν΄λμ€λλ΄λΆ ν΄λμ€
λ΄λΆ ν΄λμ€μ μ’ λ₯μ νΉμ§
- λ³μμ μ μΈ μμΉμ λ°λ₯Έ μ’ λ₯μ κ°μ
- μΈμ€ν΄μ€ ν΄λμ€
- μΈλΆ ν΄λμ€μ λ©€λ² λ³μ μ μΈ μμΉμ μ μΈ
- μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ λ©€λ²μ²λΌ λ€λ£¨μ΄μ§
- μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ λ©€λ²λ€κ³Ό κ΄λ ¨λ μμ μ μ¬μ©λ λͺ©μ μΌλ‘ μ£Όλ‘ μ¬μ©
- μ€νν± ν΄λμ€
- μΈλΆ ν΄λμ€μ λ©€λ² λ³μ μ μΈ μμΉμ μ μΈ
- μΈλΆ ν΄λμ€μ static λ©€λ²μ²λΌ λ€λ£¨μ΄μ§
- μ£Όλ‘ μΈλΆ ν΄λμ€μ staic λ©€λ²(νΉν static λ©μλ)μμ μ¬μ©λ λͺ©μ
- μ§μ ν΄λμ€
- μΈλΆ ν΄λμ€μ λ©μλλ μ΄κΈ°ν λΈλ μμ μ μΈ
- μ μΈλ μμ λ΄λΆμμλ§ μ¬μ© κ°λ₯
- μ΅λͺ
ν΄λμ€
- ν΄λμ€μ μ μΈκ³Ό κ°μ²΄μ μμ±μ λμμ νλ μΌνμ© μ΄λ¦ μλ ν΄λμ€
λ΄λΆ ν΄λμ€μ μ μΈ
- λ΄λΆ ν΄λμ€μ μ μΈ μμΉκ° λ³μμ μ μΈ μμΉμ λμΌ
- λ³μμ λμΌν μ ν¨λ²μμ μ κ·Όμ±μ κ°μ§
λ΄λΆ ν΄λμ€μ μ μ΄μμ μ κ·Όμ±
- λ΄λΆ ν΄λμ€κ° μΈλΆ ν΄λμ€μ λ©€λ²μ κ°μ΄ κ°μ£Όλ¨
- μΈμ€ν΄μ€ λ©€λ²μ static λ©€λ² κ°μ κ·μΉμ΄ λ΄λΆ ν΄λμ€μλ λμΌνκ² μ μ©
- abstractλ finalκ³Ό κ°μ μ μ΄μλ₯Ό μ¬μ© κ°λ₯
- private, protectedμ κ°μ μ κ·Ό μ μ΄μλ μ¬μ© κ°λ₯
μ΅λͺ ν΄λμ€
- ν΄λμ€μ μ μΈκ³Ό κ°μ²΄μ μμ±μ λμμ ν¨
- λ¨ ν λ²λ§ μ¬μ©λ μ μκ³ μ€μ§ νλμ κ°μ²΄λ§μ μμ±νλ μΌνμ© ν΄λμ€
new μ‘°μν΄λμ€μ΄λ¦() {
// λ©€λ² μ μΈ
}
λλ
new ꡬνμΈν°νμ΄μ€μ΄λ¦() {
// λ©€λ² μ μΈ
}
- μ΅λͺ
ν΄λμ€λ μ΄λ¦μ΄ μκΈ° λλ¬Έμ
μΈλΆ ν΄λμ€λͺ $μ«μ.class
μ νμμΌλ‘ ν΄λμ€ νμΌλͺ μ΄ κ²°μ
'Java > Javaμ μ μ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Chapter 09 - java.lang ν¨ν€μ§μ μ μ©ν ν΄λμ€ (0) | 2022.04.26 |
---|---|
Chapter 08 - μμΈμ²λ¦¬ (0) | 2022.04.24 |
Chapter 06 - κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° 1 (0) | 2022.04.20 |
Chapter 05 - λ°°μ΄ (0) | 2022.04.19 |
Chapter 04 - 쑰건문과 λ°λ³΅λ¬Έ (0) | 2022.04.15 |