JAVA/WhiteShip Java Live Study
[JAVA] ν΄λμ€λ? (ν΄λμ€, κ°μ²΄, new, λ©μλ, μμ±μ, this...)
π ν΄λμ€
ν΄λμ€
- κ°μ²΄λ₯Ό μ μν΄ λμ κ²
- κ°μ²΄μ μ€κ³λ λλ ν
- κ°μ²΄λ₯Ό μμ±νλλ° μ¬μ©λ¨
ν΄λμ€λ₯Ό μ μνλ λ°©λ²
ν΄λμ€λ κ°μ²΄λ₯Ό μ μν κ²μ΄λ―λ‘, ν΄λμ€μλ κ°μ²΄μ λͺ¨λ μμ±κ³Ό κΈ°λ₯μ΄ μ μλμ΄ μλ€.
class Tv {
// μμ±(λ³μ)
String color;
boolean power;
int channel;
// κΈ°λ₯(λ©μλ)
void power() { power = !power; }
void channelUp() { channel++; }
void channelDown() { channel--; }
π κ°μ²΄
κ°μ²΄
- μ€μ λ‘ μ‘΄μ¬νλ κ². μ¬λ¬Ό λλ κ°λ
- κ°μ²΄μ μ©λλ κ°μ²΄κ° κ°μ§κ³ μλ κΈ°λ₯κ³Ό μμ±μ λ°λΌ λ€λ¦
- ν΄λμ€μ μ μλ λ΄μ©λλ‘ λ©λͺ¨λ¦¬μ μμ±λ κ²
κ°μ²΄ λ§λλ λ°©λ²
μΈμ€ν΄μ€ν
- ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό λ§λλ κ³Όμ
- μ΄λ€ ν΄λμ€λ‘λΆν° λ§λ€μ΄μ§ κ°μ²΄λ₯Ό κ·Έ ν΄λμ€μ μΈμ€ν΄μ€λΌκ³ νλ€.
κ°μ²΄ : λͺ¨λ μΈμ€ν΄μ€λ₯Ό λννλ ν¬κ΄μ μΈ μλ―Έ
μΈμ€ν΄μ€ : μ΄λ€ ν΄λμ€λ‘λΆν° λ§λ€μ΄μ§ κ²μΈμ§λ₯Ό κ°μ‘°νλ λ³΄λ€ κ΅¬μ²΄μ μΈ μλ―Έ
κ°μ²΄μ κ΅¬μ± μμ
- μμ±(property)
- λ©€λ²λ³μ(member variable), νΉμ±(attribute), νλ(field), μν(state)
- κΈ°λ₯(function )
- λ©μλ(method), ν¨μ(function), νμ(behavior)
ν΄λμ€λͺ
λ³μλͺ
; // ν΄λμ€μ κ°μ²΄λ₯Ό μ°Έμ‘°νκΈ° μν μ°Έμ‘°λ³μλ₯Ό μ μΈ
λ³μλͺ
= new ν΄λμ€λͺ
(); // ν΄λμ€μ κ°μ²΄λ₯Ό μμ± ν, κ°μ²΄μ μ£Όμλ₯Ό μ°Έμ‘°λ³μμ μ μ₯
Tv t; // Tv ν΄λμ€ νμ
μ μ°Έμ‘°λ³μ tλ₯Ό μ μΈ
t = new Tv(); // TvμΈμ€ν΄μ€λ₯Ό μμ±ν ν, μμ±λ Tv μΈμ€ν΄μ€μ μ£Όμλ₯Ό tμ μ μ₯
μ)
class Tv {
String color;
boolean power;
int channel;
void power() { power = !power; }
void channelUp() { ++channel; }
void channelDown() { --channel; }
}
public class TvTest {
public static void main(String[] args) {
Tv t;
t = new Tv();
t.channel = 7;
t.channelDown();
System.out.println("νμ¬ μ±λμ " + t.channel + "μ
λλ€.");
}
}
new μ°μ°μ
ν΄λμ€ λ³μ = new ν΄λμ€();
μΈμ€ν΄μ€(κ°μ²΄)λ₯Ό μμ±ν΄μ£Όλ μν
λ©λͺ¨λ¦¬(Heap μμ)μ λ°μ΄ν°λ₯Ό μ μ₯ν 곡κ°μ ν λΉλ°κ³
κ·Έ 곡κ°μ μ°Έμ‘°κ°μ κ°μ²΄μκ² λ°ννμ¬ μ£Όκ³ μ΄μ΄μ μμ±μλ₯Ό νΈμΆνλ€.
π λ©μλ
λ©μλ
νΉμ μμ
μ μννλ μΌλ ¨μ λ¬Έμ₯λ€μ νλλ‘ λ¬Άμ κ²
λ©μλ μ μνλ λ°©λ²
λ°ννμ
λ©μλ μ΄λ¦(νμ
λ³μλͺ
, νμ
λ³μλͺ
, ...) // μ μΈλΆ
{
// λ©μλ νΈμΆ μ μνλ μ½λ // ꡬνλΆ
}
int add(int a, int b) // μ μΈλΆ
{
// ꡬνλΆ
int result = a + b;
return result; // νΈμΆν λ©μλλ‘ κ²°κ³Όλ₯Ό λ°ννλ€.
}
λ©μλ μ μΈλΆ
λ°ννμ , λ©μλ μ΄λ¦, 맀κ°λ³μ μ μΈμΌλ‘ ꡬμ±λμ΄ μμ.
λ°ννμ
λ©μλ μ΄λ¦(λ§€κ° λ³μ μ μΈ) {};
int add(int x, inty) {};
π‘ μ°Έκ³ - μΈμ(argument) μ 맀κ°λ³μ(parameter)
- μΈμ(argument)
- λ©μλλ₯Ό νΈμΆν λ κ΄νΈ μμ μ§μ ν΄μ€ κ°
- 맀κ°λ³μ(parameter)
- λ©μλλ₯Ό μ μΈν λ μ μν κ²
λ©μλ ꡬνλΆ
λ©μλκ° νΈμΆλμμ λ μνλ λ¬Έμ₯
λ©μλμ λ°ννμ
μ΄ void
κ° μλ κ²½μ°, ꡬνλΆ μμ return
λ°νκ°μ΄ λ°λμ ν¬ν¨λμ΄ μμ΄μΌνλ€.
π μμ±μ
μΈμ€ν΄νΈκ° μμ±λ λ νΈμΆλλ μΈμ€ν΄μ€ μ΄κΈ°ν λ©μλ
μ¬κΈ°μ μΈμ€ν΄μ€ μ΄κΈ°νλ, μΈμ€ν΄μ€ λ³μλ€μ μ΄κΈ°ννλ κ²μ λ»νλ€.
π¨ μ°μ°μ newκ° μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄μ§ μμ±μκ° μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄ μλλ€.
- μΈμ€ν΄μ€ μμ± κ³Όμ
- μ°μ°μ newμ μν΄μ λ©λͺ¨λ¦¬(heap)μ Cardν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λλ€.
- μμ±μ Card()κ° νΈμΆλμ΄ μνλλ€.
- μ°μ°μ newμ κ²°κ³Όλ‘, μμ±λ Card μΈμ€ν΄μ€μ μ£Όμκ° λ°νλμ΄ μ°Έμ‘°λ³μ cμ μ μ₯λλ€.
Card c = new Card();
μμ±μμ 쑰건
- μμ±μμ μ΄λ¦μ ν΄λμ€μ μ΄λ¦κ³Ό κ°μμΌνλ€.
- μμ±μλ λ¦¬ν΄ κ°μ΄ μλ€.
μμ±μ μ μνλ λ°©λ²
κΈ°λ³Έ μμ±μ
ν΄λμ€μ΄λ¦() {}
Card() {}
λͺ¨λ ν΄λμ€μλ λ°λμ νλ μ΄μμ μμ±μκ° μ μλμ΄ μμ΄μΌνλ€.
μμ±μκ° μ μλμ΄ μμ§ μμ κ²½μ°, μ»΄νμΌλ¬κ° κΈ°λ³Έμμ±μλ₯Ό μΆκ°ν΄μ μ»΄νμΌ νλ€.
κΈ°λ³Έ μμ±μλ μμ κ°μ΄ μ무 맀κ°λ³μλ, μ무 λ΄μ©λ μλ κ²μ λ§νλ€.
맀κ°λ³μκ° μλ μμ±μ
λ§κ·Έλλ‘ λ§€κ°λ³μκ° μλ μμ±μλ€.
μμ±μλ λ©μλ μ²λΌ 맀κ°λ³μλ₯Ό μ μΈνμ¬ νΈμΆ μ κ°μ λ겨 λ°μμ μΈμ€ν΄μ€ μ΄κΈ°ν μμ
μ μ¬μ©λ μ μλ€.
ex)
class Car {
String color;
String gearType;
int door;
Car() {} // κΈ°λ³Έ μμ±μ
Car(String c, String g, int d) { // μμ±μ
color = c;
gearType = g;
door = d;
}
}
// μμ±μλ₯Ό μ¬μ©νμ§ μμμ λ
Car c = new Car();
c.color = "white";
c.grearType = "auto";
c.door = 4;
// μμ±μ μ¬μ© μ
Car c = new Car("white", "auto", 4);
π this
JAVAμμ this
λ κ°μ²΄, μκΈ°μμ μ λνλΈλ€.
thisλ₯Ό μ¬μ©νλ μν©μ ν¬κ² 3κ°μ§κ° μλ€.
1. ν΄λμ€μ μμ±κ³Ό μμ±μ/ λ©μλμ 맀κ°λ³μμ μ΄λ¦μ΄ κ°μ κ²½μ°
thisλ₯Ό μ¬μ©νμ§ μμ μ
public class Fruit {
public String name;
public String color;
public double weihgt;
public int count;
public Fruit(String name, String color, double weight, int count) {
name = name;
color = color;
weight = weight;
count = count;
}
public static void main(String[] args) {
Fruit banana = new Fruit("banana", "yellow", 5.0, 10);
System.out.println("name: " + banana.name); // name: null
System.out.println("color: " + banana.color); // color: null
System.out.println("weight: " + banana.weihgt); // weight: 0.0
System.out.println("count: " + banana.count); // count: 0
}
}
μΌλ°μ μΌλ‘ μμ±μ λλ set/get λ©μλμ 맀κ°λ³μ μ΄λ¦μ ν΄λμ€μ μμ± μ΄λ¦κ³Ό λμΌνκ² μ μ©λλ€.
μμμ 보μ¬μ§λ μμ±μμ 맀κ°λ³μ μμ ν΄λμ€ μμ±κ³Ό λμΌν μ΄λ¦μΌλ‘ μ μλμ΄ μλ€.
κ·Έλ°λ° main
λ©μλμμ Fruit κ°μ²΄λ₯Ό μμ±νκ³ μμ± κ°λ€μ μΆλ ₯ν΄λ³΄λ μμμΉ λͺ»ν κ²°κ³Όκ° λνλλ€.
μ΄κΈ°νκ° μ΄λ£¨μ΄ μ§μ§ μμλ€. ("banana", "yellow", 5.0, 10);
λΌκ³ κ°μ μ
λ ₯νμμλ λΆκ΅¬νκ³ .
μμ±μμ ꡬν λΆλΆμμ name = name;
μ²λΌ μ¬μ©νκ² λ면맀κ°λ³μ name = 맀κ°λ³μ name
ννκ° λμ΄ Fruit κ°μ²΄μ name
μμ±μλ κ°μ΄ μ
λ ₯λμ§ μλλ€.
μ¦, Java λ μ’μΈ‘μ name
μ΄ μμ±μ κ°λ¦¬ν€κ³ μλ€λ μ¬μ€μ μΈμ§νμ§ λͺ»νλ€.
μ΄λ΄ λ this
ν€μλκ° μ¬μ©λλ€.
public class Fruit {
public String name;
public String color;
public double weight;
public int count;
public Fruit(String name, String color, double weight, int count) {
this.name = name;
this.color = color;
this.weight = weight;
this.count = count;
}
public static void main(String[] args) {
Fruit banana = new Fruit("banana", "yellow", 5.0, 10);
System.out.println("name: " + banana.name); // name: banana
System.out.println("color: " + banana.color); // color: yellow
System.out.println("weight: " + banana.weight); // weight: 5.0
System.out.println("count: " + banana.count); // count: 10
}
}
this.name = name;
μ Fruit κ°μ²΄μ name μμ± = 맀κ°λ³μ name
ννκ° λμ΄ Fruit κ°μ²΄μ μμ±μ΄ κ°μ μ
λ ₯νκ² λλ€.
μ¬κΈ°μ this ν€μλλ κ°μ²΄ μμ μ μμ±μ λνλ΄κ² λλ κ²μ΄λ€.
2. ν΄λμ€μ μ€λ²λ‘λ©λ λ€λ₯Έ μμ±μ νΈμΆ
μμ±μμ μ΅μλ¨μ μ¬μ©λμ΄μΌ νλ€.
public class Fruit {
public String name;
public String color;
public double weight;
public int count;
public Fruit(String name, String color) {
// Fruit(String name, String color, double weight, int count)λ₯Ό νΈμΆ
this(name, color, 0.0, 0);
}
public Fruit(String name, String color, double weight, int count) {
this.name = name;
this.color = color;
this.weight = weight;
this.count = count;
}
public static void main(String[] args) {
Fruit banana = new Fruit("banana", "yellow", 5.0, 10);
System.out.println("name: " + banana.name); // name: banana
System.out.println("color: " + banana.color); // color: yellow
System.out.println("weight: " + banana.weight); // weight: 5.0
System.out.println("count: " + banana.count); // count: 10
}
}
νλμ ν΄λμ€μ μ¬λ¬κ°μ μμ±μκ° μ€λ²λ‘λ©λμ΄ μμ λ
μΌλΆλΆμ μ μΈνκ³ λ μλ‘ μ€λ³΅λ μ½λλ₯Ό κ°μ§κ³ μλ κ²½μ°κ° λ§μ΄ μλ€.
μ€λ²λ‘λ©
- λ무 λ§μ΄ μ μ¬νλ€(Overloading)λ λ»
- κ°μ μ΄λ¦μ λ©μλμ 맀κ°λ³μμ νμ , κ°μλ₯Ό λ€λ₯΄κ² ν κ²
μ΄λ° μκ°μ λ΄λΆμ μ μλ λ€λ₯Έ μμ±μλ₯Ό νΈμΆνμ¬ μ½λμ μ€λ³΅μ νΌνκ³ κΉλνκ² μμ€λ₯Ό μμ±ν μ μλ€.
κ°μ ν΄λμ€μ μ€λ²λ‘λ© λ λ€λ₯Έ μμ±μ°¨λ₯Ό νΈμΆν λ this ν€μλκ° μ¬μ©λλ€.
μμ±μλ₯Ό νΈμΆν λμλ μνλ μμ±μμ 맀κ°λ³μλ₯Ό νμΈν ν λ©μλλ₯Ό νΈμΆνλ κ² μ²λΌthis(맀κ°λ³μ...)
μ ννλ‘ μ΄μ©νλ©΄ λλ€.
μμμ 2κ°μ 맀κ°λ³μλ₯Ό μ
λ ₯λ°μ μμ±μ(name, color)
μ ꡬνλΆλΆμμ
4κ°μ 맀κ°λ³μλ₯Ό μμ±μ(name, color, weight, count)
λ₯Ό νΈμΆνκ³ μλ€.
3. κ°μ²΄ μμ μ μ°Έμ‘°κ°μ μ λ¬νκ³ μΆμ λ
public class Fruit {
public String name;
public String color;
public double weight;
public int count;
public Fruit(String name, String color, double weight, int count) {
this.name = name;
this.color = color;
this.weight = weight;
this.count = count;
}
public Fruit getFruitInstance() {
return this;
}
}
μ΄λ€ λ©μλμμλ λμμ μλ£νκ³ λ¦¬ν΄κ°μΌλ‘
λ©μλμ 맀κ°λ³μλ‘ κ°μ²΄, μκΈ° μμ μ μ°Έμ‘°κ°μ μ λ¬νκ³ μΆμ΄νλ κ²½μ°κ° μλ€.
μ΄λ΄ λ getFruitInstance()
μ²λΌ this
ν€μλλ₯Ό μ΄μ©ν¨μΌλ‘μ¨ κ΅¬νμ΄ κ°λ₯νλ€.
https://library1008.tistory.com/4
Javaμ μ μ (λμ°μΆν, λ¨κΆμ± μ )
'JAVA > WhiteShip Java Live Study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] ν¨ν€μ§λ? (package, import, classpath...) (0) | 2021.06.12 |
---|---|
[JAVA] μμμ΄λ? (μΆμν΄λμ€, super, final, μ€λ²λΌμ΄λ©...) (0) | 2021.06.07 |
[JAVA] μ μ΄λ¬Έ (2) | 2021.05.23 |
[JAVA] μ°μ°μ (νμ΄ν, μΌν, switch...) (0) | 2021.05.17 |
[JAVA] μλ° λ°μ΄ν° νμ , λ³μ κ·Έλ¦¬κ³ λ°°μ΄ (0) | 2021.05.17 |