-
ν¨ν€μ§, μ κ·Ό μ μ΄μ, static λ³μ, singleton ν¨ν΄Java 2022. 2. 28. 17:13
π‘ ν¨ν€μ§ 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 λ¬Έμ μ΄κ΅¬λ~
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ€μ°¨μ λ°°μ΄, ArrayList (0) 2022.02.28 λ°°μ΄, ν₯μλ forλ¬Έ (0) 2022.02.28 μμ±μ, this, κ°μ²΄ κ°μ νλ ₯ (0) 2022.02.22 μΈμ€ν΄μ€, μ 보μλ (0) 2022.02.18 κ°μ²΄, ν΄λμ€, λ©€λ²λ³μ, λ©μλ (0) 2022.02.18