μ€λ μ£Όμ μ¬ν (5/23, νμμΌ)
- μΌκ°νκ³ (TIL)
- Java λ¬Έλ² νμ΅
미리보기λ₯Ό λΉμλκΈ°μ μ’ κ·Έλμ TIL/WILμλ λ΄κ° μ§μ μ°κ³ 보μ ν μ¬μ§μ μ°κ³ μλλ°, λ€λ₯Έ μ¬λλ€μ μ¬νν 미리보기 μ΄λ―Έμ§λ₯Ό μ§μ λ§λλ κ² κ°λ€!
λ΄κ° λ무 κ°μ± λΈλ‘κ±°κ° λμ΄κ°λ 건 μλμ§...
μμΉ¨μ νΉκ°μ λ€μΌλ©΄μ λ΄κ° μΌκ°νκ³ (TIL)λ₯Ό μμ±νλ λ°©μμ λν΄ λλμ보λ μκ°μ μ κΉ κ°μ‘λ€. μμ΅μ ν λλ 곡λΆν λ΄μ©μ μμ½-μ λ¦¬λ§ νλκ² νμ¬μ κ°μ₯ ν° λ¬Έμ μΈ κ² κ°λ€. νκ³ λΌκΈ° 보λ€λ κ°μλ ΈνΈλ₯Ό μ°λ λλ.
곡λΆλ₯Ό νλ©΄μ μ 리νλ€ λ³΄λ©΄ νΌκ³€ν΄μ Έμ... ν루μ λμΌλ‘ κ° μλ‘ νμ΄ λΉ μ§λ κ²½ν₯μ΄ μλλ°, λ΄ μ£Όκ΄μ λ΄μμ μ½λλ₯Ό μ§μ μμ±ν΄λ³΄κ±°λ, μ΄ν΄κ° μλλ λΆλΆμ λ νκ³ λ€μ΄λ³΄λ κ²λ λ°©λ²μ΄ λ μ μμ κ² κ°λ€.
κ·Έλ¦¬κ³ νκ³ λ₯Ό μ°λ κ²μ μ§μ€ν΄μ μ¬κΈ°μ λ무 νμ λΉΌλ 건 μλμ§μ λν κ³ λ―Όλ λΉΌλμ μ μλ€. κ°κ²°νκ² μ μλ μμ λ μμμ§λ§, λ΄κ° μ μλ μΌμ§λ νκ³ λ₯Ό λ€μ λμλ³Ό λ κΈ°μ΅μ΄ μ λμ§ μμκ³ , λ€λ₯Έ μμ μ ν λλ ν° λμμ΄ λμ§ μμλ μ μ΄ λ§μλ€. μ΄λ₯Ό 보μνκΈ° μν΄ κΈ°μ΅μ΄ κ°νκ² λ¨μμμ λ μ΅λν μμΈνκ² μ λλ‘ νκ³ μλ€. κ·Έλ°λ° μμΈνκ² μ λ€λ³΄λ λ¨λ€λ³΄λ€ μκ°μ΄ λ§μ΄ κ±Έλ¦°λ€λ λ¬Έμ κ° μ겨λ²λ¦° κ²μ΄λ€... μμΈνκ² μ λ 건 ν¬κΈ°νκ³ μΆμ§ μμμ, λ§€μΌ λ€μν λ°©μμ λν΄ κ³ λ―Όν΄λ³΄λ©΄μ μ’μ ν©μμ μ μ°Ύμ μ μμμΌλ©΄ μ’κ² λ€.
(ν μ€ μμ½: νλμ TILλ‘ μ€ννκ² λ κ² κ°λ€)
μΌλ°μ μΌλ‘ μμλ₯Ό μ μν λ μ¬μ©νλ ν€μλμΈ final
μ λν μ 리λ₯Ό ν΄λ³΄μλ€.
μλλ ν€μλλ§ λ©λͺ¨ν΄λλ €κ³ νλλ°... μΈν°λ·μ λμλ€λλ μμ μμ μνκ°μ΄ λκ»΄μ Έμ(?) static final
μ΄ μ κ΄λ‘κ° λμλμ§μ λν νμ΅λ μΆκ°μ μΌλ‘ ν΄λ³΄μλ€.
κ·Έμ final
ν€μλλ₯Ό μμ§ λ§μ! λ μλλ‘ μμνμ§λ§ μΈμ°λ κ±Έ λμ΄μμ μ©λκΉμ§ μΆκ°λ‘ νμ΅ν μ μμλ... μ μ΅ν μκ° π...
μ΄λ° κ²κΉμ§ μ κ²½μ°λ©΄μ μ½λλ₯Ό μμ±ν μ μ μμ΄μ λμμ΄ λ§μ΄ λμλ€. μμλ μ§μ μμ±ν΄λ³΄λ©΄μ μ΄μ¬ν μ 리νκΈ° λλ¬Έμ νμ΄μ§λ₯Ό λ°λ‘ λΆλ¦¬νλ€ (γ γ )
this
μ this()
this
= κ°μ²΄(μΈμ€ν΄μ€) μμ int value;
public Example(int value) {
this.value = value;
}
λ°ν νμ
μ΄ κ°μ²΄(μΈμ€ν΄μ€) μμ μ ν΄λμ€ νμ
μ΄λΌλ©΄, this
λ₯Ό μ¬μ©ν΄ μΈμ€ν΄μ€ μ€μ€λ‘μ μ£Όμλ₯Ό λ°νν μ μλ€.
public Example returnInstance() {
return this;
}
this()
= κ°μ²΄(μΈμ€ν΄μ€) μμ μ μμ±μλ₯Ό νΈμΆβ οΈ this()
ν€μλλ₯Ό μ¬μ©ν΄μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λλ λ°λμ ν΄λΉ μμ±μμ 첫 μ€μ μμ±λμ΄μΌνλ€. κ·Έλ μ§ μμΌλ©΄ μ»΄νμΌ μ€λ₯κ° λ°μνλ€.
String tag; // μνλͺ
int cost; // κ°κ²©
int count; // κ°μ
public Mart(String tag) {
/*
* μλμ²λΌ ν μ€λ‘ ν΄κ²°ν μ μλ€.
this.tag = tag;
this.cost = 10000;
this.count = 1;
*/
// μμ±μλ₯Ό νΈμΆ
this(tag, 10000, 1);
}
public Mart(String tag, int cost, int count) {
this.tag = tag;
this.cost = cost;
this.count = count;
}
super
μ super()
π
super
= λΆλͺ¨ ν΄λμ€μ λ©€λ²λ₯Ό μ°Έμ‘°
/* λΆλͺ¨ ν΄λμ€ */
String tag; // μνλͺ
int cost; // κ°κ²©
int count; // κ°μ
/* μμ ν΄λμ€ */
String tag = "Melon"; // μνλͺ
int cost = 10000; // κ°κ²©
int count = 1; // κ°μ
public void buyProduct(String tag, int cost, int count) {
super.tag = tag; // tagλ λΆλͺ¨ νλμ set
super.cost = cost; // costλ λΆλͺ¨ νλμ set
this.count = count; // countλ μμ νλμ set
}
π
super()
= λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό νΈμΆ
β οΈ this()
ν€μλμ λ§μ°¬κ°μ§λ‘, super()
ν€μλλ₯Ό μ¬μ©ν΄μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λλ λ°λμ ν΄λΉ μμ±μμ 첫 μ€μ μμ±λμ΄μΌνλ€. κ·Έλ μ§ μμΌλ©΄ μ»΄νμΌ μ€λ₯κ° λ°μνλ€.
/* λΆλͺ¨ ν΄λμ€ μμ±μ */
public Warehouse(String tag, int cost, int count) {
this.tag = tag;
this.cost = cost;
this.count = count;
}
/* μμ ν΄λμ€ μμ±μ */
public Mart(String tag, int cost, int count) {
super(tag, cost, count);
}
instance of
instance of
λ κ°μ²΄ νμ
μ νμΈνλ μ°μ°μλ‘, νλ³ν κ°λ₯ μ¬λΆλ₯Ό νμΈν΄ μ°Έ(True)
νΉμ κ±°μ§(False)
λ₯Ό λ°ννλ€. μ£Όλ‘ μμ κ΄κ³(λ€νμ±)μμ λΆλͺ¨ κ°μ²΄μΈμ§, μμ κ°μ²΄μΈμ§ νμΈνλλ° μ¬μ©λλ€.
{λμ κ°μ²΄ λͺ
} instanceof {ν΄λμ€ λͺ
}
μ ννλ‘ μ¬μ©ν μ μλ€.
class Parent {}
class Child extends Parent {}
public class Main {
public static void main(String[] args) {
Parent p = new Parent();
Child c = new Child();
system.out.println(p instanceof Parent); // κ²°κ³Ό: true, λΆλͺ¨ λ³ΈμΈ
system.out.println(c instanceof Parent); // κ²°κ³Ό: true, μμ is-a λΆλͺ¨ O
system.out.println(p instanceof Child); // κ²°κ³Ό: false, μμ is-a λΆλͺ¨ X
system.out.println(c instanceof Child); // κ²°κ³Ό: true, μμ λ³ΈμΈ
}
}
μ΄ν΄κ° νλ€λ€λ©΄ "instancof
λ ν΄λΉ ν΄λμ€κ° μκΈ°μ§μ΄ λ§λμ§ νμΈν΄ μ€λ€"κ³ μκ°νλ©΄ μ΄ν΄κ° μ½λ€.
π
package
= ν΄λμ€μ μΌλΆλΆμ΄λ©΄μ ν΄λμ€λ₯Ό μλ³ν΄ μ£Όλ μ©λ
C++
, C#
μ namecase
μλ μ μ¬ν κ°λ
μ΄λΌκ³ νλ€. ν¨ν€μ§λ₯Ό μ μΈν λλ μλμ κ°μ ννλ‘ μ¬μ©νλ€.
package {μμν¨ν€μ§}.{νμν¨ν€μ§};
pacakge week2.day7;
public class Camp {
public void running() {
System.out.println("Help!");
}
}
μ μΈν package
μ μμ±λ ν΄λμ€λ₯Ό ν΄λΉ package
λ°κΉ₯μμ μ¬μ©νλ €λ©΄, import
κ° νμνλ€.
π
import
= λ€λ₯Έ ν¨ν€μ§μ μλ ν΄λμ€λ₯Ό μ¬μ©νκΈ° μν΄ μ¬μ©
C++
, C#
μ using
κ³Όλ μ μ¬ν κ°λ
μ΄λΌκ³ νλ€. ν¨ν€μ§λ₯Ό μν¬νΈ ν λλ μλμ κ°μ ννλ‘ μ¬μ©νλ€.
import {μμν¨ν€μ§}.{νμν¨ν€μ§}.{ν΄λμ€λͺ
};
import {μμν¨ν€μ§}.{νμν¨ν€μ§}.*;
package week2.main;
import week2.day7.Camp;
public class Main {
public static void main(String[] args) {
Camp camp = new Camp();
camp.running(); // "Help!" μΆλ ₯
}
}
import
ν λ, ν΄λμ€λͺ
μ μλ΅νκ³ *
λ₯Ό μ¬μ©νμ¬ νννλ©΄, ν¨ν€μ§μ ν¬ν¨λ λͺ¨λ ν΄λμ€λ₯Ό μ¬μ©ν μ μλ€.
λ¨Όμ (1) μΈν°νμ΄μ€λ₯Ό μμ±νκ³ β κ·Έ (2) μΈν°νμ΄μ€λ₯Ό implements
ν€μλλ₯Ό μ¬μ©ν΄ ꡬννλ€.
public static final
μ΄μ΄μΌνλ€. (μλ΅ κ°λ₯)public abstract
μ΄μ΄μΌνλ€. (μλ΅ κ°λ₯, static λ©μλμ default λ©μλλ μμΈ)public interface MarketInterface {
public static final String tag = "MELON";
public int value = 10000;
int count = 10;
public abstract void sell() {}
void buy() {}
}
implements
ν€μλλ₯Ό μ¬μ©νλ€.public class Mart implements MarketInterface {
// μΆμ λ©μλ μ€λ²λΌμ΄λ©
@Override
public void sell() {
// sell something...
}
@Override
public void buy() {
// buy something...
}
}
μΈν°νμ΄μ€ κ°μ μμμ΄ κ°λ₯νλ€. μ΄ λλ ν΄λμ€ μμκ³Ό λμΌνκ² extends
ν€μλλ₯Ό μ¬μ©νκ³ , λ€μ€ μμμ΄ κ°λ₯
νλ€.
μΈν°νμ΄μ€ C
μλ μ무κ²λ μ μΈ λμ΄μμ§ μμ§λ§, μΈν°νμ΄μ€ A
μ B
λ₯Ό μμλ°μκΈ° λλ¬Έμ, κ²°κ³Όμ μΌλ‘ C
λ§ μμλ°μΌλ©΄ A
μ B
μμ μ μΈλ μΆμ λ©μλλ₯Ό ꡬνν μ μλ€.
interface A {
void a();
}
interface B {
void b();
}
// μΈν°νμ΄μ€ Aμ Bλ₯Ό λ€μ€ μμ λ°μ μΈν°νμ΄μ€ C
interface C extends A, B { }
public class Example implements C {
// μΈν°νμ΄μ€ Aμ μΆμ λ©μλ a()
@Override
public void a() {
System.out.println("Test : A");
}
// μΈν°νμ΄μ€ Bμ μΆμ λ©μλ b()
@Override
public void b() {
System.out.println("Test : B");
}
}
μΈν°νμ΄μ€μ ꡬνκ³Ό μμμ μΌλ° ν΄λμ€ μμκ³Όλ ν¨κ» μ¬μ©λ μ μλ€!
public class Child extends Parents implements ExInterface { }
μμκ³Ό μΆμμ λͺ¨λ μ μ©νλ©΄ ν΄λμ€μ 머리 λΆλΆμ μμ κ°μ ννκ° λλ€
βοΈ μ€λλ 1μΌ 1μ»€νΌ μλ£!
곡λΆν λ΄μ©λ€μ λ°λ‘ κΈ νμ μ μ΄λκ³ , μ¬κΈ°μλ λ§ν¬λ§ κ±Έμ΄λκΉ? λΌλ κ³ λ―Όμ λ§€μΌ νκ³ μλ€. (μ무λλ κ°λ μ±μ΄ λ³λ‘μΈ κ² κ°μμ)