ν¨ν€μ§, μ κ·Ό μ μ΄μ, static λ³μ, singleton ν¨ν΄
π‘ ν¨ν€μ§ Package
: λ³΄ν΅ μλ¬Έμλ‘ μμ±
: ν΄λμ€μ λΆλ₯κ° μ©μ΄νλ€ (λΉμ·ν κ² λΌλ¦¬ λ¬Άλλ€)
: ν¨ν€μ§κ° λ€λ₯΄λ©΄ λμΌν ν΄λμ€λͺ μ μ¬μ©ν μ μλ€ <- μΆ©λμλλ€
π‘ μ κ·Ό μ μ΄μ
π private
: ν΄λΉ λ³μ, λ©μλλ ν΄λΉ ν΄λμ€μμλ§ μ κ·Ό κ°λ₯νλ€
π default
: μ κ·Ό μ μ΄μλ₯Ό λ³λλ‘ μ€μ νμ§ μλλ€λ©΄ μ κ·Όμ μ΄μκ° μλ λ³μ, λ©μλλ default μ κ·Ό μ μ΄μκ° λμ΄
ν΄λΉ λμΌ ν¨ν€μ§ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νλ€
π protected
: ν΄λΉ λ³μ, λ©μλλ λμΌ ν¨ν€μ§μ ν΄λμ€ λλ ν΄λΉ ν΄λμ€λ₯Ό μμλ°μ λ€λ₯Έ ν¨ν€μ§μ ν΄λμ€μμλ§ μ κ·Ό κ°λ₯νλ€
π public
: ν΄λΉ λ³μ, λ©μλλ μ΄λ€ ν΄λμ€μμλΌλ μ κ·Ό κ°λ₯νλ€ (λͺ¨λ μ κ·Ό κ°λ₯)
π‘ static λ³μ
: μ¬λ¬κ°μ μΈμ€ν΄μ€(κ°κ° λ€λ₯Έ λ©λͺ¨λ¦¬ κ°μ§)κ° κ°μ λ©λͺ¨λ¦¬μ κ°μ 곡μ νκΈ° μν΄ μ¬μ©
: κΈ°μ€μ΄ λλ κ°(νμ κ°μ΄ λ³νμ§ μλ κ²½μ°)μ static λ³μλ‘ μμ± <- λ©λͺ¨λ¦¬ ν λΉ λ± νλ²λ§ νλ€
* κ°μ΄ λ³κ²½λμ§ μκΈ°λ₯Ό λ°λλ€λ©΄ static μμ final λΆμ΄κΈ°
: νλ‘κ·Έλ¨μ΄ λ©λͺ¨λ¦¬μ μ μ¬(load) λ λ λ°μ΄ν° μμμ λ©λͺ¨λ¦¬μ μμ±λλ€
π static λ©μλ
: κ°μ²΄ μμ±μμ΄ ν΄λμ€ μ΄λ¦μΌλ‘ μ§μ νΈμΆνλ€
package staticex;
public class Student {
static int serialNum = 10000; // 곡μ λλ κ°
int studentID;
String studentName;
public Student() { // constructor : ν΄λμ€μ μΈμ€ν΄μ€ κ°μ²΄λ₯Ό μμ±νκ³ μ΄κΈ°ν
serialNum++;
studentID = serialNum;
}
public static int getSerialNum() {
int i = 10;
// μ§μλ³μ : getSerialNum()λ©μλ μ€νμ μμ±λλ€ -> λλλ©΄ μ¬λΌμ§
i++;
System.out.println(i);
studentName = "νκΈΈλ";
// λ©€λ²λ³μ, μΈμ€ν΄μ€ λ³μ : newλ λ μμ± => static λ©μλμμλ λ©€λ²λ³μ μ¬μ©λΆκ°
return serialNum; // static λ³μ, ν΄λμ€ λ³μ
}
}
package staticex;
public class StudentTest {
public static void main(String[] args) {
System.out.println(Student.getSerialNum());
// staticλ©μλ μμ λ©€λ²λ³μ μ¬μ©X -> μμ§ μμ± μλ¨
Student james = new Student(); // new ν λλ§λ€ μλμΌλ‘ IDκ°μ΄ +1λλκ²μ μν¨
System.out.println(james.studentID);
System.out.println(Student.serialNum);
Student tomas = new Student();
System.out.println(tomas.studentID);
System.out.println(Student.serialNum);
System.out.println(james.serialNum); // λκ°κ° 곡μ νλ κ°
System.out.println(tomas.serialNum);
}
}
: κ²°κ³Ό
π‘ singleton ν¨ν΄
: static μμ©
: λ¨ νλμ κ°μ²΄λ§μ μμ±νκ² κ°μ νλ ν¨ν΄
-> ν΄λμ€λ₯Ό ν΅ν΄ μμ±ν μ μλ κ°μ²΄λ λ¨ νλ.
ex) λ μ§ == λ¨,νλ
: static λ³μ μ¬μ© + public μΌλ‘ μ μΈλ static λ©μλ μ¬μ©
class Singleton {
private Singleton() {
}
}
public class Sample {
public static void main(String[] args) {
Singleton singleton = new Singleton(); // μ»΄νμΌ μ€λ₯κ° λ°μνλ€.
}
}
* private -> λ€λ₯Έ ν΄λμ€μμ Singleton ν΄λμ€μ μμ±μλ‘μ μ κ·Ό λ§μλ€
-> λ€λ₯Έ ν΄λμ€μμ Singleton ν΄λμ€λ₯Ό newλ₯Ό μ΄μ©νμ¬ μμ±ν μ μκ² λ§λ€μλ€
package singleton;
public class Company {
private static Company instance = new Company();
// 2. μ 체μμ μ μΌνκ² μ¬μ©λ instance, ν¨λΆλ¬ κ° λ°λλ©΄ μλ¨ -> private, λ¨ νκ°λ§ μ‘΄μ¬ -> static
private Company(){
}
// 1. μμ±μ private -> μΈλΆμμ new Company μμ±λΆκ° -> λ΄λΆμ μμ±
public static Company getInstance() {
return instance;
}
// 3. μΈμ€ν΄μ€ κ°μ²΄ μΈλΆμμ μ¬μ©νκΈ° μν¨, κ°μ²΄ μμ±νμ§ μκ³ λ©μλ μ¬μ© -> static
}
package singleton;
public class CompanyTest {
public static void main(String[] args) {
Company c1 = Company.getInstance();
Company c2 = Company.getInstance();
System.out.println(c1 == c2); // true λμΌν κ°
}
}
cf ) singleton λ¬Έμ μ΄κ΅¬λ~