1. κ°μ²΄μ§ν₯ μΈμ΄
- κ°μ μ§ν₯ μΈμ΄ = νλ‘κ·Έλλ° μΈμ΄ + κ°μ²΄μ§ν₯ κ°λ (κ·μΉ)
ν΅μ¬ κ°λ
- μΊ‘μν
- μμ
- μΆμν
- λ€νμ±
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
- νΉμ§
- λ€νμ±
- μ 보 μλ
- μΆμν
- μΊ‘μν
- μ₯μ
- μ μ§λ³΄μμ μ©μ΄
- 볡μ‘ν λν νλ‘κ·Έλ¨ μμ± κ°λ₯
2~4. ν΄λμ€μ κ°μ²΄
ν΄λμ€
- μ μ - κ°μ²΄λ₯Ό μ μν΄ λμ κ²
- μ©λ - κ°μ²΄λ₯Ό μμ±νλλ° μ¬μ©
- κ°λ
- κ°μ²΄λ₯Ό μμ±νκΈ° μν μ€κ³λ νΉμ ν
- μ°κ΄λμ΄ μλ λ³μμ λ©μλμ μ§ν©
κ°μ²΄
- μ μ - μ€μ λ‘ μ‘΄μ¬νλ κ². μ¬λ¬Ό λλ κ°λ
- μ©λ - κ°μ²΄κ° κ°μ§κ³ μλ κΈ°λ₯κ³Ό μμ±μ λ°λΌ λ€λ¦
- κ°λ
- ν΄λμ€μ μΈμ€ν΄μ€ν : ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό λ§λλ κ³Όμ
- ν΄λμ€μ νμ μΌλ‘ μ μΈλμμ κ²½μ° κ°μ²΄
- ν΄λμ€μ μ μΈλ κ·Έλλ‘ μννΈμ¨μ΄ μμ μ€κ³λλ‘ κ΅¬νν λμ
- νΉμ§
- βν΄λμ€μ μΈμ€ν΄μ€β λΌκ³ λ λΆλ¦Ό
- OOPκ΄μ μμ ν΄λμ€μ νμ μΌλ‘ μ μΈλμμ λ κ°μ²΄λΌκ³ λΆλ¦
κ°μ²΄μ ꡬμ±μμ - μμ±κ³Ό κΈ°λ₯
- κ°μ²΄ = μμ±(λ³μ) + κΈ°λ₯(λ©μλ)
class Tv {
// μμ±(λ³μ)
String color;
boolean power;
int channel;
// κΈ°λ₯(λ©μλ)
void power() {
power = !power;
}
void channelUp() {
channel++;
}
void channelDown() {
channel--;
}
}
μΈμ€ν΄μ€
-
κ°μ²΄ : λͺ¨λ μΈμ€ν΄μ€λ₯Ό λννλ μΌλ°μ μ©μ΄
-
μΈμ€ν΄μ€ : νΉμ ν΄λμ€λ‘λΆν° μμ±λ κ°μ²΄(μ:TvμΈμ€ν΄μ€)
-
ν΄λμ€ β μΈμ€ν΄μ€ν β μΈμ€ν΄μ€(κ°μ²΄)
-
κ°λ
- ν΄λμ€μ μΈμ€ν΄μ€ : ν΄λμ€λ‘λΆν° λ§λ€μ΄μ§ κ°μ²΄
- κ°μ²΄κ° λ©λͺ¨λ¦¬μ ν λΉλμ΄ μ€μ μ¬μ©λ λ μΈμ€ν΄μ€
- μ€κ³λλ₯Ό λ°νμΌλ‘ μννΈμ¨μ΄ μμ ꡬνλ μ€μ²΄
- μ¦, κ°μ²΄λ₯Ό μννΈμ¨μ΄ μμ μ€μ²΄ν
- μ€μ²΄νλ μΈμ€ν΄μ€λ λ©λͺ¨λ¦¬μ ν λΉλ¨
-
νΉμ§
- OOPκ΄μ μμ κ°μ²΄κ° λ©λͺ¨λ¦¬μ ν λΉλμ΄ μ€μ μ¬μ©λ λ μΈμ€ν΄μ€λΌκ³ λΆλ¦
- μΈμ€ν΄μ€λ μ΄λ€ μλ³Έ(μΆμμ μΈ κ°λ )μΌλ‘λΆν° μμ±λ 볡μ λ³Έμ μλ―Έ
- μΆμ±μ μΈ κ°λ
κ³Ό ꡬ체μ μΈ κ°μ²΄ μ¬μ΄μ κ΄κ³μ μ΄μ μ λ§μΆ κ²½μ°μ μ¬μ©
- κ°μ²΄λ ν΄λμ€μ μΈμ€ν΄μ€
- μ€ν νλ‘μΈμ€λ νλ‘κ·Έλ¨μ μΈμ€ν΄μ€
μμ
/* ν΄λμ€ */
public class Animal {
...
}
/* κ°μ²΄μ μΈμ€ν΄μ€ */
public class Main {
public static void main(String[] args) {
Animal cat, dog; // ν΄λμ€μ νμ
μΌλ‘ 'κ°μ²΄' μ μΈ
// μΈμ€ν΄μ€ν
cat = new Animal(); // catμ Animal ν΄λμ€μ 'μΈμ€ν΄μ€'(κ°μ²΄λ₯Ό λ©λͺ¨λ¦¬μ ν λΉ)
dog = new Animal(); // dogμ Animal ν΄λμ€μ 'μΈμ€ν΄μ€'(κ°μ²΄λ₯Ό λ©λͺ¨λ¦¬μ ν λΉ)
Animal rat = new Animal();
// μ°Έμ‘°λ³μ rat μ Animal μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€κ³ μλ€.
// μΈμ€ν΄μ€λ μ€μ§ μ°Έμ‘°λ³μλ₯Ό ν΅ν΄μλ§ λ€λ£° μ μλ€.
}
}
6~7. κ°μ²΄μ μμ±κ³Ό μ¬μ©
1. κ°μ²΄μ μμ±
ν΄λμ€λͺ
λ³μλͺ
; // ν΄λμ€μ κ°μ²΄λ₯Ό μ°Έμ‘°νκΈ° μν μ°Έμ‘°λ³μλ₯Ό μ μΈ
λ³μλͺ
= new ν΄λμ€λͺ
(); // ν΄λμ€μ κ°μ²΄λ₯Ό μμ± ν, κ°μ²΄μ μ£Όμλ₯Ό μ°Έμ‘°λ³μμ μ μ₯
Tv t; // Tvν΄λμ€ νμ
μ μ°Έμ‘°λ³μ tλ₯Ό μ μΈ
t = new Tv(); // TvμΈμ€ν΄μ€λ₯Ό μμ±ν ν, μμ±λ TvμΈμ€ν΄μ€μ μ£Όμλ₯Ό tμ μ μ₯
2. κ°μ²΄μ μ¬μ©
t.channel = 7; // TvμΈμ€ν΄μ€μ λ©€λ²λ³μ channelμ κ°μ 7λ‘ μ€μ
t.channelDown(); // TvμΈμ€ν΄μ€μ λ©μλ channelDown()μ νΈμΆ
System.out.println("νμ¬ μ±λμ " + t.channel + " μ
λλ€.");
- νλμ μΈμ€ν΄μ€λ₯Ό μ¬λ¬ κ°μ μ°Έμ‘°λ³μκ° κ°λ¦¬ν€λ κ²½μ° (κ°λ₯)
- μ¬λ¬ κ°μ μΈμ€ν΄μ€λ₯Ό νλμ μ°Έμ‘°λ³μκ° κ°λ¦¬ν€λ κ²½μ° (λΆκ°λ₯)
8. κ°μ²΄λ°°μ΄
- κ°μ²΄ λ°°μ΄ == μ°Έμ‘°λ³μ λ°°μ΄
Tv t1, t2, t3;
Tv[] tvArr = new Tv[3]; // κΈΈμ΄κ° 3μΈ Tvνμ
μ°Έμ‘°λ³μ λ°°μ΄
// κ°μ²΄λ₯Ό μμ±ν΄μ λ°°μ΄μ κ° μμμ μ μ₯
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
9~10. ν΄λμ€μ μ μ
- ν΄λμ€ == λ°μ΄ν° + ν¨μ
- λ³μ - νλμ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ 곡κ°
- λ°°μ΄ - κ°μ μ’ λ₯μ μ¬λ¬ λ°μ΄ν°λ₯Ό νλλ‘ μ μ₯ν μ μλ 곡κ°
- ꡬ쑰체 - μλ‘ κ΄λ ¨λ μ¬λ¬ λ°μ΄ν°(μ’ λ₯ κ΄κ³X)λ₯Ό νλλ‘ μ μ₯ν μ μλ 곡κ°
- ν΄λμ€ - λ°μ΄ν°μ ν¨μμ κ²°ν©(ꡬ쑰체 + ν¨μ)
- μ¬μ©μ μ μ νμ - μνλ νμ μ μ§μ λ§λ€ μ μλ€.
// μκ°μ λνλ΄κ³ μΆμ νμ
μ΄ μμ κ²½μ°
class Time {
int hour;
int minute;
int second;
}
Time t = new Time();
11. μ μΈμμΉμ λ°λ₯Έ λ³μμ μ’ λ₯
class Variables {
// ν΄λμ€ μμ
// μ μΈλ¬Έλ§ κ°λ₯ (λ³μ μ μΈ, λ©μλ μ μΈ)
int iv; // μΈμ€ν΄μ€ λ³μ
static int cv; // ν΄λμ€ λ³μ(staticλ³μ, 곡μ λ³μ)
void method() {
// λ©μλ μμ
int lv = 0; // μ§μλ³μ
}
}
λ³μμ μ’ λ₯ | μ μΈμμΉ | μμ±μκΈ° |
---|---|---|
ν΄λμ€ λ³μ (class variable) | ν΄λμ€ μμ | ν΄λμ€κ° λ©λͺ¨λ¦¬μ μ¬λΌκ° λ (νλ‘κ·Έλ¨μ μ€ννμ λ) |
μΈμ€ν΄μ€ λ³μ (instance variable) | ν΄λμ€ μμ | μΈμ€ν΄μ€κ° μμ±λμμ λ |
μ§μλ³μ (local variable) | ν΄λμ€ μμ μ΄μΈμ μμ (λ©μλ, μμ±μ, μ΄κΈ°ν λΈλ λ΄λΆ) | λ³μ μ μΈλ¬Έμ΄ μνλμμ λ |
12~13. ν΄λμ€ λ³μμ μΈμ€ν΄μ€ λ³μ
λ©€λ²λ³μ : ν΄λμ€ μμμ μ μΈλ λ³μ
- μΈμ€ν΄μ€ λ³μ
- ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν λ λ§λ€μ΄μ§
- μΈμ€ν΄μ€λ§λ€ κ³ μ ν κ°μ κ°μ§
- ν΄λμ€ λ³μ (static λ³μ)
- λͺ¨λ μΈμ€ν΄μ€κ° 곡ν΅μΌλ‘ 곡μ (곡ν΅λ λ©λͺ¨λ¦¬ 곡κ°μ μ°Έμ‘°)
- κ°μ²΄ μμ± μμ΄ μ¬μ© κ°λ₯
class Card {
// μΈμ€ν΄μ€ λ³μ (κ°λ³ μμ±)
String kind; // 무λ¬
int number; // μ«μ
// ν΄λμ€ λ³μ (κ³΅ν΅ μμ±)
static int width = 100; // ν
static int height = 250; // λμ΄
}
// κ°μ²΄ μμ±
Card c = new Card();
// μΈμ€ν΄μ€ λ³μ μ€μ
c.kind = "HEART";
c.number = 5;
// ν΄λμ€ λ³μ μμ μ ν΄λμ€.cv λ‘ μμ±
Card.width = 200;
Card.height = 300;
14~16. λ©μλλ?
ν¨μμ λ©μλμ μ°¨μ΄
- ν¨μ Function
- νΉμ μμ μ μννλ μ½λμ‘°κ°
- λ 립λ κΈ°λ₯μ μννλ λ¨μ
- ν΄λμ€λ‘λΆν° λ 립μ
- λ©μλ Method
- ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ ν¬ν¨λμ΄ μλ ν¨μ
- λ€λ₯Έλ§λ‘ ν΄λμ€ ν¨μ
14. λ©μλλ?
- λ¬Έμ₯λ€μ λ¬Άμ΄λμ κ².
- μμ λ¨μλ‘ λ¬Έμ₯λ€μ λ¬Άμ΄μ μ΄λ¦ λΆμΈ κ²
- κ°(μ λ ₯)μ λ°μμ μ²λ¦¬νκ³ , κ²°κ³Όλ₯Ό λ°ν(μΆλ ₯)
- λ©μλμ μ₯μ
- μ½λμ μ€λ³΅μ μ€μΌ μ μμ
- μ½λμ κ΄λ¦¬κ° μ¬μ
- μ½λλ₯Ό μ¬μ¬μ©ν μ μμ
- μ½λκ° κ°κ²°ν΄μ μ΄ν΄νκΈ° μ¬μμ§
- λ©μλμ μμ±
- λ°λ³΅μ μΌλ‘ μνλλ μ¬λ¬ λ¬Έμ₯μ λ©μλλ‘ μμ±
- νλμ λ©μλλ ν κ°μ§ κΈ°λ₯λ§ μννλλ‘ μμ±
- λ©μλ = μ μΈλΆ + ꡬνλΆ
// μ μΈλΆ
int add (int a, int b) {
// ꡬνλΆ
int result = a + b;
return result;
}
15. λ©μλμ ꡬνλΆ
- μ§μλ³μ(lv) : λ©μλ λ΄μ μ μΈλ λ³μ
// λ©μλ μμ
int add (int a, int b) {
// a, b λ 맀κ°λ³μ
// a, b, result λ μ§μλ³μ
int result = a + b;
return result;
}
// λ©μλ μμ
int multiply (int a, int b) {
// a, b λ 맀κ°λ³μ
// a, b, result λ μ§μλ³μ
int result = a * b;
return result;
}
17~19. λ©μλνΈμΆ
public class ArgumentParameter {
public static void main(String[] args) {
int argument = 10;
operation(argument); // μ λ¬μΈμ(Argument, μλ³Έ)
}
private static int operation(int parameter){ // 맀κ°λ³μ(Parameter, 볡μ¬λ³Έ)
parameter += 10;
return parameter;
}
}
Call by value
- ν¨μμ μ λ¬λλ λ°μ΄ν° νμ μ΄ Primitive μΌ κ²½μ°
- ν¨μκ° νΈμΆλ λ, ν¨μλ₯Ό μν μμμ λ©λͺ¨λ¦¬ 곡κ°μ΄ μμ±λ¨
- Call by value λ°©μμΌλ‘ νΈμΆ μ μ λ¬λλ λ³μμ κ°μ 볡μ¬νμ¬ ν¨μμ μΈμλ‘ μ λ¬ν¨
- 볡μ¬λ μΈμλ ν¨μ μμμ μ§μμ μΌλ‘ μ¬μ©λλ local valueμ νΉμ±μ κ°μ§
- μ¦, ν¨μ μμμ μΈμμ κ°(Parameter)μ΄ λ³κ²½λμ΄λ, μΈλΆ λ³μμ κ°(Argument)μ λ³κ²½ X
Call by reference
- ν¨μμ μ λ¬λλ λ°μ΄ν° νμ μ΄ Reference μΌ κ²½μ°
- Call by reference λ°©μμΌλ‘ νΈμΆ μ μ λ¬λλ λ³μμ λ²μ§μλ₯Ό μ λ¬ν¨
- Argument μ parameter λͺ¨λ κ°μ κ°μ²΄λ₯Ό μ°Έμ‘°νκ² λ¨
- μ¦, ν¨μ μμμ μΈμμ κ°μ΄ λ³κ²½λλ©΄, μΈλΆ λ³μμ κ°λ λ³κ²½λ¨
22. νΈμΆ μ€ν(call stack)
- λ©μλ μνμ νμν λ©λͺ¨λ¦¬κ° μ 곡λλ 곡κ°
- λ©μλκ° νΈμΆλλ©΄ νΈμΆμ€νμ λ©λͺ¨λ¦¬ ν λΉ, μ’ λ£λλ©΄ ν΄μ
23. κΈ°λ³Έν 맀κ°λ³μ
- κΈ°λ³Έν 맀κ°λ³μ - λ³μμ κ°μ μ½κΈ°λ§ ν μ μλ€. (read only)
- μ°Έμ‘°ν 맀κ°λ³μ - λ³μμ κ°μ μ½κ³ λ³κ²½ν μ μλ€. (read & write)
class Data {
int x;
}
public class Ex6_6 {
public static void main(String[] args) {
Data d = new Data();
d.x = 10; // Dataκ°μ²΄μ μΈμ€ν΄μ€ λ³μ μ΄κΈ°ν
System.out.println("main() : x = " + d.x);
change(d.x); // argumentλ‘ Dataκ°μ²΄μ xλ₯Ό μ€λ€.
System.out.println("After change(d.x)");
// λ©μλ μμμλ d.x μ κ°μ κΈ°λ³Έν κ°μ 리ν°λ΄λ‘ μ¬μ©νκΈ° λλ¬Έμ λ³ν¨μ΄ μμ
System.out.println("main() : x = " + d.x);
}
static void change(int x) { // parameterλ‘ Dataκ°μ²΄μ xλ₯Ό λ°μ§λ§ κΈ°λ³Ένμ 리ν°λ΄λ‘ μ λ¬
x = 1000; // 리ν°λ΄ x λ₯Ό 1000 μΌλ‘ λ³κ²½
System.out.println("change() : x = " + x);
}
}
24~25. μ°Έμ‘°ν 맀κ°λ³μ
- κΈ°λ³Έν 맀κ°λ³μ - λ³μμ κ°μ μ½κΈ°λ§ ν μ μλ€. (read only)
- μ°Έμ‘°ν 맀κ°λ³μ - λ³μμ κ°μ μ½κ³ λ³κ²½ν μ μλ€. (read & write)
class Data2 {
int x;
}
public class Ex6_7 {
public static void main(String[] args) {
Data2 d = new Data2();
d.x = 10; // Data2κ°μ²΄μ μΈμ€ν΄μ€ λ³μ xλ₯Ό μ΄κΈ°ν
System.out.println("main() : x = " + d.x);
change(d);
System.out.println("After change(d.x)");
// λ©μλκ° κ°μ²΄λ₯Ό μ°Έμ‘°νμ¬ μΈμ€ν΄μ€ λ³μλ₯Ό μμ νκΈ° λλ¬Έμ λ³κ²½μ¬νμ΄ μκΉ
System.out.println("main() : x = " + d.x);
}
static void change(Data2 d) { // parameterλ‘ μ°Έμ‘°ν Data2κ°μ²΄λ₯Ό λ°μ
d.x = 1000; // dκ°μ²΄μ μΈμ€ν΄μ€ λ³μλ₯Ό μ§μ λ³κ²½
System.out.println("change() : x = " + d.x);
}
}
26~29. static λ©μλ, μΈμ€ν΄μ€ λ©μλ
μΈμ€ν΄μ€ λ©μλ
- μΈμ€ν΄μ€ μμ± ν,
βμ°Έμ‘°λ³μ.λ©μλμ΄λ¦()β
μΌλ‘ νΈμΆ - μΈμ€ν΄μ€ λ©€λ²(iv, im)μ κ΄λ ¨λ μμ μ νλ λ©μλ
- λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μ(iv) μ¬μ© κ°λ₯
static λ©μλ
- κ°μ²΄ μμ± μμ΄
βν΄λμ€μ΄λ¦.λ©μλμ΄λ¦()β
μΌλ‘ νΈμΆ - μΈμ€ν΄μ€ λ©€λ²(iv, im)μ κ΄λ ¨μλ μμ μ νλ λ©μλ
- λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μ(iv) μ¬μ© λΆκ°
- μμ±ν λ©μλ μ€ μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€ λ©μλλ₯Ό μ¬μ©νμ§ μλλ€λ©΄ static
30~31. μ€λ²λ‘λ©(overloading)
- ν ν΄λμ€ μμ κ°μ μ΄λ¦μ λ©μλ μ¬λ¬ κ° μ μνλ κ²
μ€λ²λ‘λ©μ΄ μ±λ¦½νκΈ° μν 쑰건
- λ©μλ μ΄λ¦μ΄ κ°μμΌ νλ€.
- 맀κ°λ³μμ κ°μ λλ νμ μ΄ λ¬λΌμΌ νλ€.
- λ°ν νμ μ μν₯μλ€.
// νλ¦° μμ
// λ°ν νμ
λ§ λ€λ₯΄κΈ° λλ¬Έμ μ€λ²λ‘λ©μ΄ μλ (μ€λ³΅ μ μ)
int add(int a, int b) {
return a + b;
}
long add(int a, int b) {
return (long)(a + b);
}
// μ¬λ°λ₯Έ μμ
// 맀κ°λ³μμ νμ
μ΄ λ€λ₯΄κΈ° λλ¬Έμ μ€λ²λ‘λ©
long add(int a, long b) {
return a + b;
}
long add(long a, int b) {
return a + b;
}
μ€λ²λ‘λ©μ μ¬λ°λ₯Έ μ - 맀κ°λ³μλ λ€λ₯΄μ§λ§ κ°μ μλ―Έμ κΈ°λ₯μν
class MyMath3 {
int add(int a, int b) {
System.out.println("int add(int a, int b) - ");
return a + b;
}
long add(long a, long b) {
System.out.println("long add(long a, long b) - ");
return a + b;
}
int add(int[] a) {
System.out.println("int add(int[] a) - ");
int result = 0;
for (int i = 0; i < a.length; i++) {
result += a[i];
}
return result;
}
}
32~35. μμ±μ, κΈ°λ³Έ μμ±μ
μμ±μ (constructor)
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;
Time t = new Time(12,34,56);
- κ°λ
- μΈμ€ν΄μ€κ° μμ±λ λλ§λ€ νΈμΆλλ βμΈμ€ν΄μ€ μ΄κΈ°ν λ©μλβ
- μΈμ€ν΄μ€ μμ± μ μν ν μμ (iv μ΄κΈ°ν)μ μ¬μ©
ν΄λμ€μ΄λ¦(νμ
λ³μλͺ
, νμ
λ³μλͺ
, ...) {
// μΈμ€ν΄μ€ μμ± μ μνλ μ½λ
// μ£Όλ‘ μΈμ€ν΄μ€ λ³μμ μ΄κΈ°ν μ½λλ₯Ό μ λλ€.
}
class Card {
Card() { // 맀κ°λ³μ μλ μμ±μ
// μΈμ€ν΄μ€ μ΄κΈ°ν μμ
}
Card(String kind, int number) { // 맀κ°λ³μ μλ μμ±μ
// μΈμ€ν΄μ€ μ΄κΈ°ν μμ
}
}
- νΉμ§
- μ΄λ¦μ΄ ν΄λμ€ μ΄λ¦κ³Ό κ°μμΌ νλ€.
- 리ν΄κ°μ΄ μλ€. (void μ λΆμ)
- λͺ¨λ ν΄λμ€λ λ°λμ μμ±μλ₯Ό κ°μ ΈμΌ νλ€.
κΈ°λ³Έ μμ±μ (default constructor)
class Data_1 {
int value;
}
class Data_2 {
int value;
Data_2(int x) { // 맀κ°λ³μκ° μλ μμ±μ
value = x;
}
}
public class Ex6_11 {
public static void main(String[] args) {
Data_1 d1 = new Data_1();
Data_2 d2 = new Data_2(); // compile error λ°μ
}
}
- κ°λ
- 맀κ°λ³μκ° μλ μμ±μ
- μμ±μκ° νλλ μμ λλ§, μ»΄νμΌλ¬κ° μλ μΆκ°
맀κ°λ³μκ° μλ μμ±μ
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.gearType = "auto";
c.door = 4;
Car c = new Car("white", "auto", 4);
36~37. μμ±μ this(), μ°Έμ‘°λ³μ this
μμ±μ this()
class Car2 {
String color;
String gearType;
int door;
Car2() {
this("white", "auto", 4);
}
Car2(String color) {
this(color, "auto", 4);
}
Car2(String color) {
door = 5; // 첫 μ€μ μ°μ§ μμμ μλ¬
Car(color, "auto", 4); // thisλ₯Ό μ°μ§ μμμ μλ¬
}
Car2(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
- κ°λ
- μμ±μ, κ°μ ν΄λμ€μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©νλ€.
- νΉμ§
- λ€λ₯Έ μμ±μ νΈμΆ μ 첫 μ€μμλ§ μ¬μ©κ°λ₯
μ°Έμ‘°λ³μ this
class Car2 {
String color;
String gearType;
int door;
Car2(String color, String gearType, int door) {
// this.colorλ iv, colorλ lv
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
- κ°λ
- μΈμ€ν΄μ€ μμ μ κ°λ¦¬ν€λ μ°Έμ‘°λ³μ, μΈμ€ν΄μ€μ μ£Όμκ° μ μ₯λμ΄ μλ€.
- λͺ¨λ μΈμ€ν΄μ€ λ©μλμ μ§μλ³μλ‘ μ¨κ²¨μ§ μ±λ‘ μ‘΄μ¬νλ€.
- νΉμ§
- μΈμ€ν΄μ€ λ©μλ(μμ±μ ν¬ν¨)μμ μ¬μ©κ°λ₯ (μ? this λ μΈμ€ν΄μ€ λ³μλ₯Ό μλ―ΈνκΈ° λλ¬Έμ)
- μ§μλ³μ(lv)μ μΈμ€ν΄μ€ λ³μ(iv)λ₯Ό ꡬλ³ν λ μ¬μ©
38~41. λ³μ, λ©€λ²λ³μμ μ΄κΈ°ν
λ³μμ μ΄κΈ°ν
class InitTest {
// μλ μ΄κΈ°ν
// μ μ§ κΈ°κ°μ΄ λΉκ΅μ κΈΈκΈ° λλ¬Έμ μλ μ΄κΈ°ν
int x; // μΈμ€ν΄μ€ λ³μ
int y = x; // μΈμ€ν΄μ€ λ³μ
void method1() {
// μλ μ΄κΈ°ν
// νΈμΆ μ€ν λ©λͺ¨λ¦¬λ μ¬μ¬μ©μ΄ λΉλ²νκΈ° λ§€λ² μλ μ΄κΈ°ν μ μ±λ₯μ΄ μ νλ¨
// μ§μλ³μλ λ©μλκ° νΈμΆλμ μμ
νλ λμλ§ μ‘΄μ¬νκΈ° λλ¬Έμ μλͺ
μ£ΌκΈ°κ° μ§§μ
int i; // μ§μλ³μ
int j = i; // μλ¬. μ§μλ³μλ₯Ό μ΄κΈ°ννμ§ μκ³ μ¬μ©
}
}
- κ°λ
- μ§μλ³μ(lv)λ μλ μ΄κΈ°ν ν΄μΌν¨ (μ¬μ© μ κΌ!!!)
- λ©€λ²λ³μ(iv, cv)λ μλ μ΄κΈ°νλλ€.
λ©€λ²λ³μμ μ΄κΈ°ν
- ν΄λμ€ λ³μ μ΄κΈ°ν μμ : ν΄λμ€κ° μ²μ λ‘λ©λ λ λ¨ ν λ²
- μΈμ€ν΄μ€ λ³μ μ΄κΈ°ν μμ : μΈμ€ν΄μ€κ° μμ±λ λ λ§λ€
- λͺ μμ μ΄κΈ°ν(=) (κ°λ¨ν μ΄κΈ°ν)
class Car {
int door = 4; // κΈ°λ³Έν(primitive type) λ³μμ μ΄κΈ°ν
Engine e = new Engine(); // μ°Έμ‘°ν(reference type) λ³μμ μ΄κΈ°ν
}
- μ΄κΈ°ν λΈλ (볡μ‘ν μ΄κΈ°ν)
- μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ:
{ }
- ν΄λμ€ μ΄κΈ°ν λΈλ:
static { }
- μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ:
class StaticBlockTest {
static int[] arr = new int[10]; // λͺ
μμ μ΄κΈ°ν
static { // ν΄λμ€ μ΄κΈ°ν λΈλ - λ°°μ΄ arrμ λμλ‘ μ±μ΄λ€.
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 10) + 1;
}
}
}
- μμ±μ (볡μ‘ν μ΄κΈ°ν)
Car(String color, String gearType, int door) { // 맀κ°λ³μμλ μμ±μ
this.color = color;
this.gearType = gearType;
this.door = door;
}