π€μ νμ(Modifier)κ° λμλλΌ?
νΉλ³ν κΈ°λ₯(μ ν)μ μ 곡νκΈ° μν ν€μλ
=> Access Modifier(private, package, protected, public), static, final, abstract
π€static μ νμλ?
κ°μ²΄κ° μλ ν΄λμ€λ‘ ν΄λμ€ λ΄λΆμ μμ±λ νλ λλ λ©μλμ μ κ·ΌνκΈ° μν κΈ°λ₯μ μ 곡νλ ν€μλ(μ νμ)
=> ν΄λμ€(λ΄λΆν΄λμ€), νλ, λ©μλ μμ±μ μ¬μ© κ°λ₯ν μ νμ
π€static μ νμ μ¬μ© μ΄μ
μ μμ μΌλ‘ μ½κ² μ¬μ¬μ©νλ λ©€λ²λ μ λ³νμ§ μλ λ³μ λλ μμ, λ©μλλ₯Ό μ¬μ©ν λ μ£Όλ‘ μ¬μ©ν¨.
μλνλ©΄ ν΄λμ€ νΈμΆκ³Ό κ°μ²΄ μμ±μ λ°λ‘ ν νμμμ΄ λ°λ‘ μ¬μ©μ΄ κ°λ₯νκΈ° λλ¬Έ.
π€static μ¬μ© μ λ¨μ
· staticμ λ©λͺ¨λ¦¬ μμμ ν λΉν΄λκ³ μ¬μ©νλ κ²μ΄κΈ° λλ¬Έμ λ무 λ§μ΄ μ¬μ©νλ©΄ λ©λͺ¨λ¦¬λ₯Ό λ§μ΄ μ°¨μ§νκ² λκ³ , κ·Έλ¬λ©΄ νλ‘κ·Έλ¨μ΄ 무거μμ§
· static λ©μλλ μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©ν μ μμ
· μ μμ μΌλ‘ κ΄λ¦¬λκΈ° λλ¬Έμ νλ‘κ·Έλ¨ μ 체μμ μ κ·Ό λ° λ³κ²½μ΄ κ°λ₯ν¨. κ³ λ‘ λ¬Έμ λ°μ μ μμΌ μ°Ύλλ° μ΄λ €μ λ°μ.
β« μΈμ€ν΄μ€ νλ/λ©μλ vs μ μ νλ/λ©μλ λΉκ΅!
·μΈμ€ν΄μ€ νλ(Instance Field) : κ°μ²΄κ° μμ±λ λ λ©λͺ¨λ¦¬(Heap Area)μ λ§λ€μ΄μ§λ νλ κ°μ²΄λ₯Ό μ¬μ©νμ¬ νλ μ¬μ©
=> μμ±μλ₯Ό μ΄μ©νμ¬ μΈμ€ν΄μ€ νλμ νμν μ΄κΈ°κ° μ μ₯
· μ μ νλ(Static Field) : ν΄λμ€λ₯Ό μ½μ΄ λ©λͺ¨λ¦¬(Method Area)μ μ μ₯λ λ λ§λ€μ΄μ§λ νλ
=> κ°μ²΄κ° μμ±λκΈ° μ μ λ©λͺ¨λ¦¬μ νλλ§ λ§λ€μ΄μ§λ νλ
=> μ μ νλμλ κΈ°λ³Έκ°μ΄ μ μ₯λλ©° νμν κ²½μ° μ μ νλ μμ±μ μ§μ μ΄κΈ°κ° μ μ₯
=> ν΄λμ€λ‘ μμ±λ λͺ¨λ κ°μ²΄κ° μ μ νλ μ¬μ© κ°λ₯ - λͺ¨λ κ°μ²΄κ° λ©λͺ¨λ¦¬λ₯Ό 곡μ νμ¬ μ¬μ©
=> μ μ νλλ₯Ό μμ±νλ©΄ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μκ³ νλκ° λ³κ²½ μ©μ΄
=> ν΄λμ€ μΈλΆμμλ κ°μ²΄κ° μλ ν΄λμ€λ₯Ό μ΄μ©νμ¬ νλ μ¬μ©
· μΈμ€ν΄μ€ λ©μλ(Instance Method) : κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ©μλ νΈμΆ
=> μΈμ€ν΄μ€ λ©μλλ this ν€μλλ₯Ό μ 곡λ°μ κ°μ²΄μ νλ λλ λ©μλ μ¬μ© κ°λ₯
=> μΈμ€ν΄μ€ λ©μλλ μΈμ€ν΄μ€ νλ λ° μΈμ€ν΄μ€ λ©μλλΏλ§ μλλΌ μ μ νλμ μ μ λ©μλ μ¬μ© κ°λ₯
· μ μ λ©μλ(Static Method) : ν΄λμ€λ₯Ό μ¬μ©νμ¬ λ©μλ νΈμΆ
=> μ μ λ©μλμ this ν€μλλ₯Ό μ 곡λ°μ§ μμΌλ―λ‘ κ°μ²΄μ νλ λλ λ©μλ μ¬μ© λΆκ°λ₯
=> μ μ λ©μλμμλ μ μ νλμ μ μ λ©μλλ§ μ¬μ© κ°λ₯
=> μ μ λ©μλμμ μΈμ€ν΄μ€ νλ λ° μΈμ€ν΄μ€ λ©μλλ₯Ό μ¬μ©ν κ²½μ° μλ¬ λ°μ
μ€μ΅ μμ π©π»
1) νμμ 보 μ μ₯νκΈ° μν VOν΄λμ€ μμ±
package oop;
//νμμ 보(νλ²,μ΄λ¦,κ΅μ΄,μμ΄,μ΄μ )λ₯Ό μ μ₯νκΈ° μν ν΄λμ€ - VO ν΄λμ€
public class Student {
// μΈμ€ν΄μ€ νλ(Instance Field)
private int num;
private String name;
private int kor, eng, tot;
// μ μ νλ(Static Field) : ν΄λμ€λ₯Ό μ½μ΄ λ©λͺ¨λ¦¬(MethodArea)μ μ μ₯λ λ λ§λ€μ΄μ§λ νλ
//public static int total = 0;
private static int total = 0;
// μμ±μ(Constructor)
public Student() {
}
public Student(int num, String name, int kor, int eng) {
super();
// λ§€κ°λ³μλ‘ μ λ¬λ°μ κ°μΌλ‘ νλ μ΄κΈ°ν
this.num = num;
this.name = name;
this.kor = kor;
this.eng = eng;
// λ§€κ°λ³μλ‘ μ λ¬λ°μ κ°μ κ³μ°νμ¬ νλ μ΄κΈ°ν - μ΄μ μ κ³μ°νλ λ©μλ νΈμΆ κ°λ₯
// => μ½λ(λͺ
λ Ή)μ μ€λ³΅μ±μ μ΅μννμ¬ νλ‘κ·Έλ¨μ μμ°μ± λ° μ μ§λ³΄μμ ν¨μ¨μ± μ¦κ°
calcTot();
}
// μΈμ€ν΄μ€ λ©μλ(Instance Method)
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getTot() {
return tot;
}
public void setTot(int tot) {
this.tot = tot;
}
// κ΅μ΄μ μμ μμ΄μ μλ₯Ό μ΄μ©νμ¬ μ΄μ μ κ³μ°νμ¬ μ μ₯νλ λ©μλ
public void calcTot() {
tot = kor + eng;
}
public void display() {
System.out.print("[" + name + "(" + num + ")]λμ μ±μ >> ");
System.out.println("κ΅μ΄ = " + kor + ", μμ΄ = " + eng + ", μ΄μ = " + tot);
}
// μ μ λ©μλ(Static Method)
// => μ μ νλμ μλ total λ§ μ¬μ© κ°λ₯
public static int getTotal() {
return total;
}
public static void setTotal(int total) {
Student.total = total;
}
}
2) μ μ₯ν νμμ λ³΄λ‘ νμκ΄λ¦¬λ₯Ό μ€νν ν΄λμ€ μμ±
κ°μ²΄λ₯Ό μμ±νμ¬ νμμ 보λ₯Ό μ μ₯νλλ°, κ°μ²΄λ₯Ό λ€μ―λ² μμ±νμ¬ μ μ₯νλ λ°©λ²λ μμ.
κ·Έλ¬λ μ΄ κ²½μ°μ λ©μλλ 5λ² νΈμΆν΄μΌνκ³ , μ½λκ° κΈΈμ΄μ§λ λ¨μ μ΄ μμ.
β¬οΈμ΄ λ°©λ² λΉμΆβ¬οΈ
Student student1=new Student(1000, "νκΈΈλ", 90, 90);
Student student2=new Student(2000, "μκΊ½μ ", 94, 98);
Student student3=new Student(3000, "μ μ°μΉ", 91, 80);
Student student4=new Student(4000, "μΌμ§λ§€", 76, 82);
Student student5=new Student(5000, "μ₯κΈΈμ°", 84, 86);
student1.display();
student2.display();
student3.display();
student4.display();
student5.display();
System.out.println("==============================================================");
μ λ°©λ² λμ κ°μ²΄λ₯Ό μ μ₯ν μ μλ μμκ° 5κ°μΈ λ°°μ΄μ μμ±νμ¬ μ°Έμ‘°λ³μμ μ μ₯ν μ μμ.
β¬οΈμ΄ λ°©λ²λ so-so, μ΄κ±° λ§κ³ μ½λκ° λ κ°κ²°ν΄μ§λ λ°©λ²μ΄ μμβ¬οΈ
//κ°μ²΄λ₯Ό μ μ₯ν μ μλ μμκ° 5κ°μΈ λ°°μ΄μ μμ±νμ¬ μ°Έμ‘°λ³μμ μ μ₯
// => λͺ¨λ λ°°μ΄ μμμλ κΈ°λ³Έμ μΌλ‘ [null] μ μ₯
Student[] students=new Student[5];
//κ°μ²΄λ₯Ό μμ±νμ¬ λ°°μ΄ μμμ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμ μ μ₯ - κ°μ²΄ λ°°μ΄
students[0]=new Student(1000, "νκΈΈλ", 90, 90);
students[1]=new Student(2000, "μκΊ½μ ", 94, 98);
students[2]=new Student(3000, "μ μ°μΉ", 91, 80);
students[3]=new Student(4000, "μΌμ§λ§€", 76, 82);
students[4]=new Student(5000, "μ₯κΈΈμ°", 84, 86);
//λ°λ³΅λ¬Έμ μ¬μ©νμ¬ λ°°μ΄ μμμ μ μ₯λ λͺ¨λ κ°μ²΄λ₯Ό μ°Έμ‘°νμ¬ λ©μλ νΈμΆ κ°λ₯ - μΌκ΄μ²λ¦¬
//μ°Έμ‘°λ³μμ [null]μ΄ μ μ₯λ μνμμ μ°Έμ‘°λ³μλ‘ λ©μλλ₯Ό νΈμΆν κ²½μ° μ°Έμ‘°λ³μμ μν΄
//μ°Έμ‘°λ κ°μ²΄κ° μμΌλ―λ‘ μ€νμ NullPointerException λ°μ
// => λͺ λ Ή μ€νμ μμΈκ° λ°μλ κ²½μ° μ€νλ λͺ λ Ή μμΉμμ νλ‘κ·Έλ¨ κ°μ μ’ λ£
for(int i=0;i<students.length;i++) {
//μ°Έμ‘°λ³μμ μ μ₯λ κ°μ΄ [null]μ΄ μλ κ²½μ° μ°Έμ‘°λ³μλ‘ κ°μ²΄λ₯Ό μ°Έμ‘°νμ¬ λ©μλ νΈμΆ
// => NullPointerException λ°μμ λ°©μ§ν μ μλ μ νλ¬Έ
if(students[i] != null) {//λ°°μ΄ μμλ‘ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ κ²½μ° - κ°μ²΄κ° μ‘΄μ¬ν κ²½μ°
students[i].display();
}
}
System.out.println("==============================================================");
β¬οΈμ λ λ°©λ² λμ μ΄λ° μμΌλ‘ κ°μ²΄ λ°°μ΄ μμ±νκ³ , ν₯μλ for ꡬ문 μ¬μ©νλ©΄ μ½λκ° κ°κ²°ν΄μ§β¬οΈ
Student[] students = {new Student(1000, "νκΈΈλ", 90, 90)
, new Student(2000, "μκΊ½μ ", 94, 98), new Student(3000, "μ μ°μΉ", 91, 80)
, new Student(4000, "μΌμ§λ§€", 76, 82), new Student(5000, "μ₯κΈΈμ°", 84, 86)};
//ν₯μλ for ꡬ문μ μ¬μ©ν΄ λ°°μ΄ μμμ μ μ₯λ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ°¨λ‘λλ‘ μ 곡λ°μ
//μ°Έμ‘°λ³μμ μ μ₯νμ¬ μΌκ΄μ μΌλ‘ λ©μλ νΈμΆ κ°λ₯
for(Student student : students) {
student.display();
}
κ·Έλ¦¬κ³ μ΄ νμλ€μ λͺ¨λ μ μλ₯Ό ν©μΉ μ΄μ μ μΆλ ₯ν΄μΌνλλ°, μλμ κ°μ΄ total λ³μλ₯Ό μ μΈν΄μ μ΄μ μ λ°νλ°μλ€κ° total λ³μμ λμ ν΄μ μ μ₯ν΄λ λ¨.
//λͺ¨λ νμλ€μ μ΄μ ν©κ³λ₯Ό μ μ₯νκΈ° μν λ³μ
int total=0;
Student[] students = {new Student(1000, "νκΈΈλ", 90, 90)
, new Student(2000, "μκΊ½μ ", 94, 98), new Student(3000, "μ μ°μΉ", 91, 80)
, new Student(4000, "μΌμ§λ§€", 76, 82), new Student(5000, "μ₯κΈΈμ°", 84, 86)};
for(Student student : students) {
//νμμ μ΄μ μ λ°νλ°μ μ΄μ ν©κ³ λ³μμ λμ νμ¬ μ μ₯
total+=student.getTot();
}
System.out.println("==============================================================");
//λͺ¨λ νμλ€μ μ΄μ ν©κ³λ₯Ό κ³μ°νμ¬ μΆλ ₯
System.out.println("μ΄ν©κ³ = "+total);
System.out.println("==============================================================");
κ·Έλ¬λ μ°λ¦¬λ μ μ νλμ totalμ μ μΈν΄λ¨μ. κ·Έκ±Έ μ¬μ©νλ©΄ μ¬κΈ°μ λ°λ‘ total λ³μ μ μΈ μν΄λ λ¨. μλμ²λΌ ν΄λ μμ κ²°κ³Όκ° λκ°λ€λ λ»!
Student[] students = {new Student(1000, "νκΈΈλ", 90, 90)
, new Student(2000, "μκΊ½μ ", 94, 98), new Student(3000, "μ μ°μΉ", 91, 80)
, new Student(4000, "μΌμ§λ§€", 76, 82), new Student(5000, "μ₯κΈΈμ°", 84, 86)};
//ν₯μλ for ꡬ문μ μ¬μ©ν΄ λ°°μ΄ μμμ μ μ₯λ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ°¨λ‘λλ‘ μ 곡λ°μ
//μ°Έμ‘°λ³μμ μ μ₯νμ¬ μΌκ΄μ μΌλ‘ λ©μλ νΈμΆ κ°λ₯
for(Student student : students) {
student.display();
//μ μ νλλ ν΄λμ€λ₯Ό μ΄μ©νμ¬ μ¬μ© κ°λ₯
Student.total+=student.getTot();
System.out.println("==============================================================");
//λͺ¨λ νμλ€μ μ΄μ ν©κ³λ₯Ό κ³μ°νμ¬ μΆλ ₯
System.out.println("μ΄ν©κ³ = "+Student.total);
System.out.println("==============================================================");
κ·Έλ¬λ μ λ°©λ²μ VO ν΄λμ€μμ μ μ νλμ μ μΈν total λ³μκ° public μΌ λ κ°λ₯ν¨. (μ VO ν΄λμ€μλ μλ μ¬μ§μ λ Έλμ νμ΄λΌμ΄νΈ λΆλΆμ²λΌ μ£Όμμ²λ¦¬ ν΄λ¨μ.)
νμ§λ§ μ μ νλλ κ³ μ μ μΌλ‘ μμ£Ό μ°λ λ³μλ₯Ό μ μΈν λ μ¬μ©νλ κ²μ΄λ―λ‘ public 보λ€λ privateμΌλ‘ μ μΈνλκ² μ’μ. κ·ΈλμΌ λ§ λ°κΏ μκ° μμΌλκΉ!!(μ΄κ²μ΄ μλν)
κ·Έλμ κ²°κ΅ κ°μ₯ μ’μ λ°©λ²μ μ μ¬μ§μ²λΌ total λ³μλ₯Ό privateμΌλ‘ μ μΈν΄λκ³ , μλμ κ°μ΄ μ¬μ©νλ κ²μ.
κ·Έλμ student.getTot() λ©μλλ₯Ό ν΅ν΄ κ° νμλ€μ μ μ μ΄ν©μ λ°μ Student.setTotal() λ©μλλ‘ μ μ νλ(total)μ μ μ₯ν λ€μ Student.getTotal() λ©μλλ‘ μ μ₯ν κ°μ λΆλ¬μ λ€μ λ€μ νμμ μ μ μ΄ν©κ³Ό λνλλ°, μ΄κ±Έ forλ¬ΈμΌλ‘ λ°λ³΅νλ©΄ 5λͺ μ μ μ μ΄ν©μ΄ λͺ¨λ λν΄μ§.
λ§μ§λ§μΌλ‘ forλ¬Έ λ°μμ Student.getTotal() λ©μλλ₯Ό νλ²λ§ νΈμΆνλ©΄ μ΄ν© μΆλ ₯~!
Student[] students = {new Student(1000, "νκΈΈλ", 90, 90)
, new Student(2000, "μκΊ½μ ", 94, 98), new Student(3000, "μ μ°μΉ", 91, 80)
, new Student(4000, "μΌμ§λ§€", 76, 82), new Student(5000, "μ₯κΈΈμ°", 84, 86)};
//ν₯μλ for ꡬ문μ μ¬μ©ν΄ λ°°μ΄ μμμ μ μ₯λ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ°¨λ‘λλ‘ μ 곡λ°μ
//μ°Έμ‘°λ³μμ μ μ₯νμ¬ μΌκ΄μ μΌλ‘ λ©μλ νΈμΆ κ°λ₯
for(Student student : students) {
student.display();
//μ μ λ©μλλ ν΄λμ€λ₯Ό μ΄μ©νμ¬ νΈμΆ κ°λ₯ - λ©μλ νΈμΆ μ©μ΄
// => μ μ νλ(total)μ νμ μ΄μ (tot)λ₯Ό λ°νλ°μ ν©ν κ²°κ³Όκ°μΌλ‘ μ μ νλ(total) λ³κ²½
Student.setTotal(Student.getTotal()+student.getTot());
}
System.out.println("==============================================================");
//λͺ¨λ νμλ€μ μ΄μ ν©κ³λ₯Ό κ³μ°νμ¬ μΆλ ₯
System.out.println("μ΄ν©κ³ = "+Student.getTotal());
System.out.println("==============================================================");
μμμ μ 리ν μ΅μ μ λ°©λ² μ 체 μ½λβ¬οΈβ¬οΈ
package oop;
public class StudentApp {
public static void main(String[] args) {
Student[] students = {new Student(1000, "νκΈΈλ", 90, 90)
, new Student(2000, "μκΊ½μ ", 94, 98), new Student(3000, "μ μ°μΉ", 91, 80)
, new Student(4000, "μΌμ§λ§€", 76, 82), new Student(5000, "μ₯κΈΈμ°", 84, 86)};
//ν₯μλ for ꡬ문μ μ¬μ©ν΄ λ°°μ΄ μμμ μ μ₯λ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ°¨λ‘λλ‘ μ 곡λ°μ
//μ°Έμ‘°λ³μμ μ μ₯νμ¬ μΌκ΄μ μΌλ‘ λ©μλ νΈμΆ κ°λ₯
for(Student student : students) {
student.display();
//μ μ λ©μλλ ν΄λμ€λ₯Ό μ΄μ©νμ¬ νΈμΆ κ°λ₯ - λ©μλ νΈμΆ μ©μ΄
// => μ μ νλ(total)μ νμ μ΄μ (tot)λ₯Ό λ°νλ°μ ν©ν κ²°κ³Όκ°μΌλ‘ μ μ νλ(total) λ³κ²½
Student.setTotal(Student.getTotal()+student.getTot());
}
System.out.println("==============================================================");
//λͺ¨λ νμλ€μ μ΄μ ν©κ³λ₯Ό κ³μ°νμ¬ μΆλ ₯
System.out.println("μ΄ν©κ³ = "+Student.getTotal());
System.out.println("==============================================================");
}
}
μΆμ²:
[java] μλ° static λ? μ¬μ©νλ μ΄μ ?
μλ° static μ΄λ? static μ΄λ μ μ μ΄λ€ λΌλ μλ―Έλ₯Ό κ°κ³ μμ΅λλ€. μλ°μμλ ν΄λμ€μ κ³ μ λ λ©€λ²μ λλ€. (κ·Έλμ ν΄λμ€ λ©€λ²λΌκ³ λ λΆλ¦ λλ€.) static λ©€λ²λ€μ ν΄λμ€μ κ³ μ λ λ©€λ²μ λλ€.
taewooblog.tistory.com
[Java]Staticμ μ¬μ©μ μ§μν΄μΌνλ μ΄μ (μ μ λ³μ, μ μ λ©μλ)
μ²μ Javaμ λν΄ λ°°μΈ λ μ½λμμ μμ£Ό λ³Ό μ μλ λ¨μ΄λ λ°λ‘ Staticμ΄λ€. Javaμμμ staticμ΄λΌλ ν€μλλ₯Ό μ¬μ©ν΄μ μ μ νλμ, μ μ λ©μλλ₯Ό λ§λ€ μ μλ€. μ΄ λμ ν©μ³ ν΄λμ€ λ©€λ²λΌκ³ ν
mooonstar.tistory.com
'Backend' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java]μΈν°νμ΄μ€(Interface) -realization (0) | 2024.02.29 |
---|