λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Backend

[Java]OOP - κΈ°νƒ€μ œν•œμž - (3) static

by sukii 2024. 1. 11.
λ°˜μ‘ν˜•

πŸ€”μ œν•œμž(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("==============================================================");
	}
}

 

 


좜처:

https://taewooblog.tistory.com/entry/java-%EC%9E%90%EB%B0%94-static-%EB%9E%80-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

[java] μžλ°” static λž€? μ‚¬μš©ν•˜λŠ” 이유?

μžλ°” static μ΄λž€? static μ΄λž€ 정적이닀 λΌλŠ” 의미λ₯Ό κ°–κ³  μžˆμŠ΅λ‹ˆλ‹€. μžλ°”μ—μ„œλŠ” ν΄λž˜μŠ€μ— κ³ μ •λœ λ©€λ²„μž…λ‹ˆλ‹€. (κ·Έλž˜μ„œ 클래슀 멀버라고도 λΆ€λ¦…λ‹ˆλ‹€.) static 멀버듀은 ν΄λž˜μŠ€μ— κ³ μ •λœ λ©€λ²„μž…λ‹ˆλ‹€.

taewooblog.tistory.com

https://mooonstar.tistory.com/entry/JavaStatic%EC%9D%98-%EC%82%AC%EC%9A%A9%EC%9D%84-%EC%A7%80%EC%96%91%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%A0%95%EC%A0%81-%EB%B3%80%EC%88%98-%EC%A0%95%EC%A0%81-%EB%A9%94%EC%84%9C%EB%93%9C

 

[Java]Static의 μ‚¬μš©μ„ μ§€μ–‘ν•΄μ•Όν•˜λŠ” 이유(정적 λ³€μˆ˜, 정적 λ©”μ„œλ“œ)

처음 Java에 λŒ€ν•΄ 배울 λ•Œ μ½”λ“œμ—μ„œ 자주 λ³Ό 수 μžˆλŠ” λ‹¨μ–΄λŠ” λ°”λ‘œ Static이닀. Javaμ—μ„œμ˜ staticμ΄λΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ 정적 ν•„λ“œμ™€, 정적 λ©”μ„œλ“œλ₯Ό λ§Œλ“€ 수 μžˆλ‹€. 이 λ‘˜μ„ 합쳐 클래슀 멀버라고 ν‘œ

mooonstar.tistory.com

 

λ°˜μ‘ν˜•

'Backend' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Java]μΈν„°νŽ˜μ΄μŠ€(Interface) -realization  (0) 2024.02.29