νμ΅ν κ²
- ν΄λμ€ μ μνλ λ°©λ²
- κ°μ²΄ λ§λλ λ°©λ² (new ν€μλ μ΄ν΄νκΈ°)
- λ©μλ μ μνλ λ°©λ²
- μμ±μ μ μνλ λ°©λ²
- this ν€μλ μ΄ν΄νκΈ°
ν΄λμ€μ κ°λ
λ¨Όμ ν΄λμ€μ κ°λ μ λν΄μ μ§κ³ λμ΄κ°μΌ ν κ² κ°μμ, 곡λΆν΄ 보μλ€.
ν΄λμ€λ κ°μ²΄λ₯Ό μ μνλ ν λλ μ€κ³λμ κ°μ μλ―Έλ‘ μ¬μ©λ©λλ€. μλ°μμλ μ΄λ¬ν μ€κ³λμΈ ν΄λμ€λ₯Ό κ°μ§κ³ , μ¬λ¬ κ°μ²΄λ₯Ό μμ±νμ¬ μ¬μ©νκ² λ©λλ€.
ν΄λμ€λ κ°μ²΄μ μνλ₯Ό λνλ΄λ νλμ κ°μ²΄μ νλμ λνλ΄λ λ©μλλ‘ κ΅¬μ±μ΄ λ©λλ€.
κ°μ²΄(Object)
- μ¬μ μ μλ―Έ : 물건 λλ λμ
- κ°μ²΄μ μν(state)μ νλ(behavior)μ ꡬ체ννλ ννμ νλ‘κ·Έλλ°μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λΌκ³ νλ€.
μλ₯Ό λ€μ΄μ, "λλ κ³ΌμΌμ₯μμκ² λ κ°μ μ¬κ³Όλ₯Ό ꡬ맀νλ€"λΌλ λ¬Έμ₯μ 보면
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμλ λ, κ³ΌμΌμ₯μ, μ¬κ³ΌλΌλ κ°μ²΄λ₯Ό κ°μ§κ³ λ κ°μ μ¬κ³Όλ₯Ό ꡬ맀νλ νμλ₯Ό μ€μ²΄ν νλ κ²μ΄λ€.
ν΄λμ€ μ μ νλ λ²
class Member {
// νλ(field)
Long id;
String name;
// μμ±μ(constructor)
public Member() {
}
// λ©μλ(method)
void setName(String name){
this.name = name;
}
..
}
κ°μ²΄ λ§λλ λ°©λ²(new ν€μλ μ΄ν΄νκΈ°)
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμλ λͺ¨λ λ°μ΄ν°λ₯Ό κ°μ²΄(Object)λ‘ μ·¨κΈνλ©°, μ΄λ¬ν κ°μ²΄κ° λ°λ‘ νλ‘κ·Έλλ°μ μ€μ¬μ΄ λ©λλ€.
Member member = new Member(); // 'member'λΌλ κ°μ²΄ μμ±
member.setId(1);
member.setName("λ©€λ²");
! new ν€μλλ‘ μμ±ν κ°μ²΄μ λ©λͺ¨λ¦¬ ν λΉ
- memberλ (μΈμ€ν΄μ€μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κ°μ§κ³ μλ€) μ°Έμ‘°λ³μμ΄μ§λ§ μ§μλ³μ μ΄λ―λ‘ Stack λ©λͺ¨λ¦¬μ μ μ₯λλ€.
- new ν€μλλ‘ μμ±λ Member μΈμ€ν΄μ€λ μμ±λ μκ° Heap λ©λͺ¨λ¦¬μ μ μ₯λκ³ , memberμ id, name μ 보λ ν¨κ» Heap λ©λͺ¨λ¦¬μ μ μ₯λλ€.
- new μ°μ°μλ κ°μ²΄(μΈμ€ν΄μ€)λ₯Ό μμ±μν¨ ν, κ°μ²΄μ μ£Όμλ₯Ό 리ν΄νλλ‘ λμ΄ μλ€.
μ½λ
Member member; // μ°Έμ‘°λ³μ μ μΈ : Memberν΄λμ€μ κ°μ²΄λ₯Ό μ°Έμ‘°νλ 'member'λΌλ μ°Έμ‘° λ³μ μ μΈ(λ©λͺ¨λ¦¬ λ‘λ© μ )
member = new Member(); // μΈμ€ν΄μ€ ν : κ°μ²΄λ₯Ό μμ±ν ν, κ°μ²΄μ μ£Όμλ₯Ό μ°Έμ‘° λ³μμ μ μ₯ (λ©λͺ¨λ¦¬μ λ‘λ© λ¨)
System.out.println(member);
μ€ν κ²°κ³Ό
Member@15db9742 // μ£Όμ κ°μ΄ μ°νλ€.
λ©μλ μ μνλ λ°©λ²
- κΈ°λ³Έ λ¬Έλ²
- νλΌλ―Έν°λ μ¬λ¬κ°λ₯Ό λ°μ μ μλ€.
- νλΌλ―Έν°λ μλ΅ κ°λ₯νλ€.
- ex) getter λ©μλ
- 리ν΄νμ voidλ μ무 κ°λ 리ν΄μ μνκ² λ€λ μλ―Έμ΄λ€.
- λ νΌλ°μ€ νμ λ νλΌλ―Έν°λ‘ μ€ μ μλ€.
μμ±μ μ μνλ λ°©λ²
κΈ°λ³Έ μμ±μ
public class Member {
int age;
String name;
// κΈ°λ³Έ μμ±μ μλμΌλ‘ μμ±λλ€.
}
main
Member member = new Member(); // μ»΄νμΌλ¬κ° μλμΌλ‘ κΈ°λ³Έ μμ±μλ₯Ό μμ±ν΄μ€.
맀κ°λ³μλ₯Ό λ°λ μμ±μ
public class Member {
int age;
String name;
public Member(int age, String name) {
this.age = age;
this.name = name;
}
}
main
Member member = new Member(10, "name");
Member member = new Member(); // μ»΄νμΌ μ€λ₯! (λ€λ₯Έ μμ±μλ₯Ό μ μΈνκΈ° λλ¬Έμ, κΈ°λ³Έ μμ±μλ λ°λ‘ λ§λ€μ΄μ£Όμ§ μμ!)
μ΄κΈ°ν λΈλμ ν΅ν μ΄κΈ°ν
public class Member {
int age;
String name;
{
System.out.println("μ΄κΈ°ν λΈλμ
λλ€. μμ±μκ° νΈμΆ λκΈ° μ μ€ν λ©λλ€.");
}
public Member() {
System.out.println("κΈ°λ³Έ μμ±μ μ
λλ€.");
}
public Member(int age, String name) {
System.out.println("int, Stringμ λ°λ μμ±μ μ
λλ€.");
}
}
μ€ν κ²°κ³Ό
// 1λ²μ§Έ
Member member = new Member();
----------------------------------------------
μ΄κΈ°ν λΈλμ
λλ€. μμ±μκ° νΈμΆ λκΈ° μ μ€ν λ©λλ€.
κΈ°λ³Έ μμ±μ μ
λλ€.
----------------------------------------------
// 2λ²μ§Έ
Member member = new Member(10, "name");
----------------------------------------------
μ΄κΈ°ν λΈλμ
λλ€. μμ±μκ° νΈμΆ λκΈ° μ μ€ν λ©λλ€.
int, Stringμ λ°λ μμ±μ μ
λλ€.
----------------------------------------------
Quiz
public clas Point {
int x, y;
{
if(x > 1)
y = 10;
}
public Point(int x) {
this.x = x;
}
}
μλ μ½λλ₯Ό μ€ν νμ λ, yκ°μ μΌλ§ μΌκΉ?
Point point = new Point(5);
System.out.println(point.y); // κ³Όμ° yκ°μ ? 10 or 0?
μ€ν μμλ (1) μ΄κΈ°ν λΈλ -> (2) μμ±μ μμΌλ‘ μ€νμ΄ λλ€.
그리νμ¬, μ°λ¦¬κ° μμ±μλ₯Ό νΈμΆ ν λ xμ 5λ₯Ό λ£μ΄μ€¬μ§λ§, μ΄κΈ°ν λΈλμ μ€ν ν λμλ μμ§ μμ±μ νΈμΆ μ μ΄κΈ° λλ¬Έμ
xμλ κΈ°λ³Έ κ°μΈ 0μ΄ λ€μ΄κ° μμΌλ―λ‘ yλ 0(κΈ°λ³Έ κ°)μ΄ λλ€.
μ½κ° λμμ(?) κ°μ ν΄μ¦λΌμ κ°μ Έμ λ΄€λ€.
this ν€μλ μ΄ν΄νκΈ°
this ν€μλλ₯Ό μ΄μ©ν΄ λ©€λ² λ³μ μ°Έμ‘° νκΈ°.
νλΌλ―Έν°μ λ©€λ² λ³μμ μ΄λ¦μ΄ κ°μΌλ©΄, this ν€μλλ₯Ό μ΄μ©ν΄μ ꡬλΆμ ν΄μ€μΌ ν©λλ€.
public class Member {
private int age;
private String name;
public Member(int age, String name){
this.age = age; // this.ageλ Memberν΄λμ€ λ΄μ μ μΈλ age, ageλ νλΌλ―Έν°λ‘ λμ΄μ¨ λ³μλ₯Ό λ»ν¨.
this.name = name; // ageλ λμΌ
}
..
public Member getMember() {
return this; // νμ¬ Member κ°μ²΄μ μ£Όμκ°μ 리ν΄
}
}
this ν€μλλ₯Ό μ΄μ©ν μμ±μ νΈμΆ
public class Member {
private String name;
public Member() {
this("init name"); // String μ λ°λ μμ±μλ₯Ό νΈμΆ ν©λλ€.
}
public Member(String name) {
this.name = name;
}
}
κ³Όμ (Optional)
- int κ°μ κ°μ§κ³ μλ μ΄μ§ νΈλ¦¬λ₯Ό λνλ΄λ Node λΌλ ν΄λμ€λ₯Ό μ μνμΈμ.
- int value, Node left, rightλ₯Ό κ°μ§κ³ μμ΄μΌ ν©λλ€.
- BinrayTreeλΌλ ν΄λμ€λ₯Ό μ μνκ³ μ£Όμ΄μ§ λ Έλλ₯Ό κΈ°μ€μΌλ‘ μΆλ ₯νλ bfs(Node node)μ dfs(Node node) λ©μλλ₯Ό ꡬννμΈμ.
- DFSλ μΌμͺ½, 루νΈ, μ€λ₯Έμͺ½ μμΌλ‘ μννμΈμ.
μ΄μ§νΈλ¦¬μ 쑰건
- λͺ¨λ μμλ μ€λ³΅λ κ°μ κ°μ§λ©΄ μλλ€.
- μΌμͺ½ μλΈνΈλ¦¬μ μ‘΄μ¬νλ λ Έλλ€μ κ°μ 루νΈμ κ°λ³΄λ€ λ°λμ μμμΌ νλ€.
- μ€λ₯Έμͺ½ μλΈνΈλ¦¬μ μ‘΄μ¬νλ λ Έλλ€μ κ°μ 루νΈμ κ°λ³΄λ€ λ°λμ μ»€μΌ νλ€.
κ³Όμ λ μ github λ§ν¬λ₯Ό 첨λΆνκ² μ΅λλ€.
github.com/iseunghan/learn-java-study-whiteship/blob/main/src/main/java/week5/Tree.java
iseunghan/learn-java-study-whiteship
Contribute to iseunghan/learn-java-study-whiteship development by creating an account on GitHub.
github.com
REFERENCES
www.orentec.co.kr/teachlist/JAVA_BASIC_1/teach_sub1.php
====== μ€λ μ§ λ―Έλμ΄ ======
λͺ©λ‘ μλ²1 μλ²2 κ°μμκ° κ°μκ΅μ Chapter 01. Let's Start JAVA! 01-1. μλ°μ μΈκ³λ‘ μ€μ μ¬λ¬λΆμ νμν©λλ€. 32:59 01-2. μλ° νλ‘κ·Έλ¨μ μ΄ν΄μ μ€νμ μ리
www.orentec.co.kr