κ°μ²΄ μ§ν₯
- μ»΄ν¨ν°κ° μννλ μμ μ κ°μ²΄λ€ κ°μ μνΈμμ©μΌλ‘ νν
- ν΄λμ€ νΉμ κ°μ²΄λ€μ μ§ν©μΌλ‘ νλ‘κ·Έλ¨ μμ±
μΊ‘μν
- κ°μ²΄λ₯Ό μΊ‘μλ‘ μΈμ κ·Έ λ΄λΆλ₯Ό 보νΈνκ³ λ³Ό μ μκ² νλ κ²
μμ
- μμ κ°μ²΄μ μμ±μ νμ κ°μ²΄μ λ¬Όλ €μ€.
λ€νμ±
- κ°μ μ΄λ¦μ λ©μλκ° ν΄λμ€λ κ°μ²΄μ λ°λΌ λ€λ₯΄κ² ꡬνλλ κ²
- λ©μλ μ€λ²λ‘λ©: ν ν΄λμ€ λ΄μμ κ°μ μ΄λ¦μ΄μ§λ§ λ€λ₯΄κ² μλνλ μ¬λ¬ λ©μλ
- λ©μλ μ€λ²λΌμ΄λ©: μνΌν΄λμ€μ λ©μλλ₯Ό λμΌν μ΄λ¦μΌλ‘ μλΈ ν΄λμ€λ§λ€ λ€λ₯΄κ² ꡬν
ν΄λμ€μ κ°μ²΄
- ν΄λμ€: κ°μ²΄μ μμ±κ³Ό νμ μ μΈ. κ°μ²΄λ₯Ό λ§λ€μ΄λ΄κΈ° μν ν
- κ°μ²΄λ₯Ό ν΄λμ€μ μΈμ€ν΄μ€λΌκ³ ν¨.
- κ°μ²΄λ€μ ν΄λμ€μ μ μΈλ λμΌν μμ±μ κ°μ§μ§λ§ μμ± κ°μ μλ‘ λ€λ₯΄λ€.
μλ° ν΄λμ€ λ§λ€κΈ°
ν΄λμ€ κ΅¬μ±
1. ν΄λμ€ κ΅¬μ±
- class ν€μλλ‘ ν΄λμ€ μ μΈ
2. ν΄λμ€ λ©€λ²
- ν΄λμ€μ κ΅¬μ± μμ. νλμ λ©μλ
- νλ: κ°μ²΄μ μν κ°μ μ μ₯ν λ©€λ² λ³μ
- λ©μλ: μ€ν κ°λ₯ν ν¨μμ΄κ³ κ°μ²΄μ νμλ₯Ό ꡬν
3. μ κ·Ό μ§μ μ
- public: λ€λ₯Έ ν΄λμ€μμ νΈμΆ, μ κ·Ό κ°λ₯νλλ‘ κ³΅κ°

κ°μ²΄ μμ±κ³Ό νμ©
// λ°μ§λ¦κ³Ό μ΄λ¦μ κ°μ§ Circle ν΄λμ€λ₯Ό μμ±νκ³ ,
// Circle ν΄λμ€μ κ°μ²΄ μμ±νκΈ°
public class Circle {
int radius; // μμ λ°μ§λ¦ νλ
String name; // μμ μ΄λ¦ νλ
public double getArea() { // λ©€λ² λ©μλ
return 3.14*radius*radius;
}
public static void main(String[] args) {
Circle pizza; // κ°μ²΄μ λν λ νΌλ°μ€ λ³μ pizza μ μΈ
pizza = new Circle(); // Circle κ°μ²΄ μμ±
pizza.radius = 10; // νΌμμ λ°μ§λ¦μ 10μΌλ‘ μ€μ
pizza.name = "μλ°νΌμ"; // νΌμμ μ΄λ¦ μ€μ
double area = pizza.getArea(); // νΌμμ λ©΄μ μμλ΄κΈ°
System.out.println(pizza.name + "μ λ©΄μ μ " + area);
Circle donut = new Circle(); // Circle κ°μ²΄ μμ±
donut.radius = 2; // λλμ λ°μ§λ¦μ 2λ‘ μ€μ
donut.name = "μλ°λλ"; // λλμ μ΄λ¦ μ€μ
area = donut.getArea(); // λλ λ©΄μ μμλ΄κΈ°
System.out.println(donut.name + "μ λ©΄μ μ " + area);
}
}

1. λ νΌλ°μ€ λ³μ μ μΈ
Circle pizza;
// λ νΌλ°μ€ λ³μ pizza μ μΈ
2. κ°μ²΄ μμ±
pizza = new Circle();
// new μ°μ°μλ₯Ό μ¬μ©νμ¬ Circle κ°μ²΄ μμ±
3. κ°μ²΄ λ©€λ² μ κ·Ό
κ°μ²΄λ νΌλ°μ€.λ©€λ²
pizza.radius = 10; // pizza κ°μ²΄μ radius κ°μ 10μΌλ‘ μ€μ
pizza.name = "μλ°νΌμ"; // pizza κ°μ²΄μ nameμ "μλ°νΌμ" λμ
double area = pizza.getArea(); // pizza κ°μ²΄μ getArea() λ©μλ νΈμΆ
μμ±μ
- κ°μ²΄κ° μμ±λ λ μ΄κΈ°ν λͺ©μ μΌλ‘ μ€νλλ λ©μλ
- κ°μ²΄κ° μμ±λλ μκ° μλ νΈμΆ (리ν΄κ° X)
package test1;
public class Circle2 {
int radius;
String name;
public Circle2() { // λ§€κ°λ³μ μλ μμ±μ
radius = 1; name= ""; // radiusμ μ΄κΈ°κ°μ 1
}
public Circle2(int r, String n) { // λ§€κ°λ³μλ₯Ό κ°μ§ μμ±μ
radius = r; name = n; // radiusμ name νλ μ΄κΈ°ν
}
public double getArea() {
return 3.14 * radius * radius;
}
public static void main(String[] args) {
Circle2 pizza = new Circle2(10, "μλ°νΌμ"); // Circle2 κ°μ²΄ μμ±, λ°μ§λ¦ 10
double area = pizza.getArea();
System.out.println(pizza.name + "μ λ©΄μ μ " + area);
Circle2 donut = new Circle2(); // Circle2 κ°μ²΄ μμ±, λ°μ§λ¦ 1
donut.name = "λλνΌμ";
area = donut.getArea();
System.out.println(donut.name + "μ λ©΄μ μ " + area);
}
}
- μμ±μ μ΄λ¦μ ν΄λμ€ μ΄λ¦κ³Ό λμΌνλ€.
- μμ±μλ₯Ό μ¬λ¬ κ° μμ±ν μ μλ€.
- μμ±μλ κ°μ²΄λ₯Ό μμ±ν λ ν λ²λ§ νΈμΆλλ€.
- μμ±μμ λ¦¬ν΄ νμ μ μ§μ ν μ μλ€.
- μμ±μμ λͺ©μ μ κ°μ²΄κ° μμ±λ λ, νμν μ΄κΈ° μμ μ μν¨μ΄λ€.
κΈ°λ³Έ μμ±μ
class Circle {
public Circle() { } // κΈ°λ³Έ μμ±μ
}
- λ§€κ° λ³μκ° μκ³ μ€ν μ½λκ° μμ΄ μ무 μΌλ νμ§ μκ³ λ¨μ 리ν΄νλ μμ±μ
- λν΄νΈ μμ±μλΌκ³ λ λΆλ₯Έλ€.
- ν΄λμ€μ μμ±μκ° νλλ μ μΈλμ΄ μμ§ μμ κ²½μ°, μ»΄νμΌλ¬λ κΈ°λ³Έ μμ±μλ₯Ό μλμΌλ‘ μμ±νλ€.
this λ νΌλ°μ€
- κ°μ²΄ μμ μ λν λ νΌλ°μ€λ‘μ λ©μλ μμμ μ¬μ©λλ€.
- νμ¬ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
- static λ©μλμμλ μ¬μ©ν μ μλ€.
class Circle {
int radius;
public Circle() { this.radius = 1; }
public Circle(int radius) { this.radius = radius; }
public double getArea() { return 3.14*this.radius*this.radius; }
...
}
this()
- ν΄λμ€ λ΄μμ μμ±μκ° λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©
- μμ±μμμλ§ μ¬μ©λλ€.
- λ°λμ κ°μ ν΄λμ€μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©λλ€.
- λ°λμ μμ±μμ 첫 λ²μ§Έ λ¬Έμ₯μΌλ‘ μ¬μ©λμ΄μΌ νλ€.
public class Book {
String title;
String author;
void show() { System.out.println(title + " " + author); }
public Book() {
this("", "");
System.out.println("μμ±μ νΈμΆλ¨");
}
public Book(String title) {
this(title, "μμλ―Έμ");
}
public Book(String title, String author) {
this.title = title;
this.author = author;
}
public static void main(String[] args) {
Book littePrince = new Book("μ΄λ¦°μμ", "μν
μ₯ν리");
Book loveStory = new Book("μΆν₯μ ");
Book emptyBook = new Book();
loveStory.show();
}
}

κ°μ²΄ λ°°μ΄
- κ°μ²΄μ λν λ νΌλ°μ€λ₯Ό μμλ‘ κ°λ λ°°μ΄
// 5κ°μ Circle κ°μ²΄ λ°°μ΄μ μμ±νκ³ νμ©νλ μ½λ
Circle [] c; // Circle λ°°μ΄μ λν λ νΌλ°μ€ λ³μ c μ μΈ
c = new Circle[5]; // λ νΌλ°μ€ λ°°μ΄ μμ±
for (int i=0; i<c.length; i++)
c[i] = new Circle(i); // κ° μμ κ°μ²΄ μμ±
for (int i=0; i<c.length; i++)
System.out.print((int)(c[i].getArea()) + " "); // λ°°μ΄μ μμ κ°μ²΄ μ¬μ©

λ°°μ΄ μ μΈ λ° μμ±
1. λ°°μ΄μ λν λ νΌλ°μ€ μ μΈ
- λ νΌλ°μ€ λ³μλ§ μ μΈν λΏ λ°°μ΄μ μμ±νλ κ²μ μλκΈ° λλ¬Έμ λ°°μ΄μ κ°μλ₯Ό μ§μ νλ©΄ μ λλ€.
Circle [] c;
2. λ νΌλ°μ€ λ°°μ΄ μμ±
c = new Circle[5]; // Circle κ°μ²΄μ λν λ νΌλ°μ€ 5κ° μμ±
3. κ°μ²΄ μμ±
- λ€μ μ½λλ Circle κ°μ²΄λ₯Ό νλμ© μμ±νμ¬ λ°°μ΄ c[]μ κ° λ νΌλ°μ€μ λμ νλ€.
for (int i=0; i<c.length; i++)
c[i] = new Circle(i);
λ°°μ΄μ μμ κ°μ²΄ μ κ·Ό
- λ€μκ³Ό κ°μ΄ λ°°μ΄ cμ iλ²μ§Έ κ°μ²΄λ₯Ό μ κ·ΌνκΈ° μν΄μλ c[i] λ νΌλ°μ€λ₯Ό μ¬μ©νλ€.
for (int i=0; i<c.length; i++)
System.out.print((int)(c[i].getArea()) + " ");
λ©μλ νμ©κ³Ό κ°μ²΄ μΉν
λ©μλ νμ

1. μ κ·Ό μ§μ μ
- public: ν΄λμ€ λ΄λΆ/μΈλΆμμ λͺ¨λ νΈμΆ κ°λ₯
- private: ν΄λμ€ λ©€λ²λ€λ§ νΈμΆ κ°λ₯
- protected: λμΌν ν¨ν€μ§μ ν΄λμ€λ€κ³Ό μμλ°μ μλΈ ν΄λμ€μμ νΈμΆ κ°λ₯
- λν΄νΈ μ κ·Ό μ§μ (μλ΅): λμΌν ν¨ν€μ§ λ΄μ λͺ¨λ ν΄λμ€μμ νΈμΆ κ°λ₯
2. λ¦¬ν΄ νμ
- λ©μλκ° νΈμΆμμκ² λ¦¬ν΄ν κ°μ νμ
μΈμ μ λ¬
- κ°μ μν νΈμΆ (call-by-value)
- νΈμΆνλ μ€μΈμμ κ°μ΄ 볡μ¬λμ΄ λ©μλμ λ§€κ° λ³μμ μ λ¬λλ€.
1. κΈ°λ³Έ νμ μ κ°μ΄ μ λ¬λλ κ²½μ°
- νΈμΆμκ° κ±΄λ€λ κ°μ΄ λ©μλμ λ§€κ° λ³μμ 볡μ¬λμ΄ μ λ¬
public class CallbyValue {
public static void main(String[] args) {
int n = 10;
increase(n); // increase λ©μλ νΈμΆ
System.out.println(n); // increase()κ° λλκ³ μ§μ λ³μ nμ κ°μ μ¬μ ν 10
}
// μ€νλ λ, λ§€κ° λ³μ mμ΄ μκΈ°κ³ nμ κ°μ μ λ¬λ°μ 10μΌλ‘ μ΄κΈ°ν
static void increase(int m) {
m = m + 1; // mμ κ°μ 1 μ¦κ°μν€μ§λ§, λ³μ nμ κ°μ λ°κΎΈμ§λ λͺ»νλ€.
}
}

2. κ°μ²΄κ° μ λ¬λλ κ²½μ°
- κ°μ²΄μ λ νΌλ°μ€ κ°μ΄ μ λ¬λλ€.
public class ReferencePassing {
public static void main(String[] args) {
Circle pizza = new Circle(10);
increase(pizza); // increase λ©μλ νΈμΆ
System.out.println(pizza.radius); // 11 μΆλ ₯
}
// λ§€κ°λ³μ mμ΄ μκΈ°κ³ , pizza λ³μμ μ μ₯λ κ°(λ νΌλ°μ€)μ΄ mμ 볡μ¬λμ΄,
// mμ pizzaκ° κ°λ¦¬ν€λ κ°μ²΄λ₯Ό ν¨κ» κ°λ¦¬ν€κ² λλ€.
static void increase(Circle m) {
m.radius++; // radiusλ 11λ‘ λ³κ²½λκ³ increase()κ° μ’
λ£ν΄λ κ·Έλλ‘ λ¨λλ€.
}
}

3. λ°°μ΄μ΄ μ λ¬λλ κ²½μ°
- λ°°μ΄μ λν λ νΌλ°μ€λ§ μ λ¬λλ€.
public class ArrayPassing {
public static void main(String[] args) {
int a[] = {1, 2, 3, 4, 5};
increase(a);
for (int i=0; i<a.length; i++)
System.out.print(a[i] + " ");
}
// λ§€κ°λ³μ arrayλ μ μν λ°°μ΄μ λν λ νΌλ°μ€λ‘μ
// λ°°μ΄ aλ₯Ό κ°λ¦¬ν€κ² λμ΄ λ λ νΌλ°μ€λ νλμ λ°°μ΄μ 곡μ νλ€.
static void increase(int[] array) {
for (int i=0; i<array.length; i++)
array[i]++;
}
}

λ©μλ μ€λ²λ‘λ©
- ν΄λμ€ λ΄μ μ΄λ¦μ΄ κ°μ§λ§ λ§€κ° λ³μμ νμ μ΄λ κ°μκ° μλ‘ λ€λ₯Έ μ¬λ¬ κ°μ λ©μλ
- λ©μλμ λ¦¬ν΄ νμ μ μκ΄μμ.
public static void main(String args[]) {
MethodSample a = new MethodSample();
int i = a.getSum(1, 2);
int j = a.getSum(1, 2, 3);
double k = a.getSum(1.1, 2.2);
}
public class MethodSample {
public int getSum(int i, int j) {
return i + j;
}
public int getSum(int i, int j, int k) {
return i + j + k;
}
public double getSum(double i, double j) {
return i + j;
}
}
κ°μ²΄ μΉν μ μ£Όμν μ
- κ°μ²΄μ μΉνμ κ°μ²΄λ₯Ό 볡μ¬νλ κ²μ΄ μλλ€.
public class Samp {
int id;
public Samp(int x) {this.id = x;}
public void set(int x) {this.id = x;}
public int get() {return this.id;}
public static void main(String[] args) {
Samp ob1 = new Samp(3);
Samp ob2 = new Samp(4);
Samp s;
s = ob2;
// κ°μ²΄μ μΉν. sλ ob2μ κ°μ²΄λ₯Ό κ°λ¦¬ν΄
ob1 = ob2;
// κ°μ²΄μ μΉν. ob1μ ob2μ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ² λ¨
// μλ ob1μ΄ κ°λ¦¬ν€λ κ°μ²΄λ μ무κ²λ κ°λ¦¬ν€μ§ μκ² λμ΄,
// λμ΄μ νλ‘κ·Έλ¨μμ μ κ·Όν μ μλ μνκ° λλ€. => κ°λΉμ§
System.out.println("ob1.id="+ob1.get());
System.out.println("ob2.id="+ob2.get());
}
}

κ°λΉμ§
- μ°Έμ‘°νλ λ νΌλ°μ€κ° νλλ μλ κ°μ²΄λ λ°°μ΄
- νλ‘κ·Έλ¨μμ λμ΄μ μ κ·Όν μ μλ€.
κ°λΉμ§ 컬λ μ
- κ°λΉμ§κ° λ§μμ§λ©΄ μμ© νλ‘κ·Έλ¨μκ² ν λΉν΄μ€ μ μλ κ°μ© λ©λͺ¨λ¦¬μ μμ΄ μ€μ΄λ λ€.
- κ°λΉμ§κ° μ μ λμ΄λ κ°μ© λ©λͺ¨λ¦¬κ° 0μ΄ λλ©΄, μλ° μμ©νλ‘κ·Έλ¨μ λμ΄μ μ€νν μ μλ€.
- κ°μ© λ©λͺ¨λ¦¬ 곡κ°μ΄ μΌμ ν¬κΈ° μ΄νλ‘ μ€μ΄λ€λ©΄, μλ° κ°μ κΈ°κ³λ μλμΌλ‘ κ°λΉμ§λ₯Ό νμνμ¬ κ°μ© λ©λͺ¨λ¦¬ 곡κ°μ λλ¦°λ€.
κ°λΉμ§ 컬λ μ κ°μ μν
- System λλ Runtime κ°μ²΄μ gc() λ©μλ νΈμΆ
Systme.gc() // κ°λΉμ§ 컬λ μ
μλ μμ²
μ κ·Ό μ§μ μ
ν¨ν€μ§
- μλ°μμλ μνΈ κ΄λ ¨ μλ ν΄λμ€ νμΌλ€μ ν¨ν€μ§μ μ μ₯νμ¬ κ΄λ¦¬νλ€.
- μλ° νλ‘κ·Έλ¨μ νλ μ΄μμ ν¨ν€μ§λ‘ ꡬμ±λλ€.
μ κ·Ό μ§μ μ
- private (μΈλΆλ‘λΆν° μλ²½ μ°¨λ¨)
- λν΄νΈ (λμΌ ν¨ν€μ§ νμ©)
- protected (λμΌ ν¨ν€μ§ + μμ ν΄λμ€ νμ©)
- public (λͺ¨λ ν΄λμ€)
static λ©€λ²
νΉμ±
- ν΄λμ€λΉ νλλ§ μμ±λλ λ©€λ²
- λμΌν ν΄λμ€μ λͺ¨λ κ°μ²΄λ€μ΄ 곡μ
- ν΄λμ€ λ©€λ²λΌκ³ λΆλ¦. (non-static λ©€λ²λ μΈμ€ν΄μ€ λ©€λ²)
- κ°μ²΄κ° μμ±νκΈ° μ , μλ©Έλ νμλ static λ©€λ²λ 곡κ°μ μ°¨μ§νκ³ μλ€. (μΈλΆμ λ³λλ‘ μ‘΄μ¬)

μ¬μ©
- κ°μ²΄ μ΄λ¦μ΄λ ν΄λμ€ μ΄λ¦μΌλ‘ λͺ¨λ νμ©ν μ μλ€.
StaticSample.m = 3; // ν΄λμ€ μ΄λ¦μΌλ‘ static νλ μ κ·Ό
StaticSample.f(); // ν΄λμ€ μ΄λ¦μΌλ‘ static λ©μλ νΈμΆ
νμ©
- μ μ λ³μμ μ μ ν¨μλ₯Ό λ§λ€ λ νμ©
- 곡μ λ©€λ²λ₯Ό λ§λ€κ³ μ ν λ νμ©
μ μ½ μ‘°κ±΄
- static λ©μλλ μ€μ§ static λ©€λ²λ§ μ κ·Όν μ μλ€.
- static λ©μλμμλ thisλ₯Ό μ¬μ©ν μ μλ€.
final
final ν΄λμ€
- λμ΄μ ν΄λμ€ μμ λΆκ°λ₯
final λ©μλ
- λμ΄μ μ€λ²λΌμ΄λ© λΆκ°λ₯
final νλ
- μμ μ μΈ
- μ΄κΈ°κ° μ§μ . μ€νμ€ κ° λ³κ²½ X
'π£οΈ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [Java] μμ (0) | 2022.02.23 |
|---|---|
| [Java] λ°°μ΄ / μμΈμ²λ¦¬ (0) | 2022.02.10 |
| [Java] μλ° κΈ°λ³Έ νλ‘κ·Έλλ° (νλ‘κ·Έλ¨ κ΅¬μ‘°, λ°μ΄ν° νμ , ν€ μ λ ₯) (0) | 2022.02.05 |