TIL(Today I Learned)_230724

Aspyn Choiยท2023๋…„ 7์›” 24์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
9/37

โ˜๐Ÿป์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ

1. OOP

- OOP (Object Oriented Programming)?

: '๊ฐ์ฒด๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€ํ–ฅํ•œ๋‹ค'๋Š” ๋œป

- ๊ฐ์ฒด์ง€ํ–ฅ์˜ 4๋Œ€ ํŠน์ง•

  1. ์บก์Šํ™”(Encapsulation)
    : ์™ธ๋ถ€ ์ ‘๊ทผ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๋ณดํ˜ธ, ์ •๋ณด ์€๋‹‰์˜ ํšจ๊ณผ๊ฐ€ ์žˆ์Œ
  2. ์ถ”์ƒํ™”(Abstraction)
    : ๊ณตํ†ต๋œ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑ / ๊ฐœ๋ณ„์ ์ธ ๊ฒƒ์€ ๋ชจ๋‘ ์ œ๊ฑฐ
    : ์ฝ”๋“œ๊ธธ์ด ๊ฐ์†Œ์˜ ํšจ๊ณผ๊ฐ€ ์žˆ์Œ
  3. ์ƒ์†(Inheritance)
    : ๊ณตํ†ต๋œ ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
    : ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€์˜ ํšจ๊ณผ๊ฐ€ ์žˆ์Œ
  4. ๋‹คํ˜•์„ฑ(polymorphism)
    : ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋ฅผ ์ง€๋‹์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป

- ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด

  1. ๊ฐ์ฒด๋ž€
    : ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ๊ฐ ๊ตฌ๋ถ„ํ•ด์„œ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ
    : ์ž์‹ ์˜ ์†์„ฑ(๊ฐ’, ๋ฐ์ดํ„ฐ -> ๋ณ€์ˆ˜)๊ณผ ๊ธฐ๋Šฅ(๋™์ž‘, ํ–‰๋™ -> ๋ฉ”์„œ๋“œ)์ด ๋‹ค๋ฅธ ๊ฒƒ๋“ค๊ณผ ๊ตฌ๋ถ„๋˜์–ด ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.
    : ์‚ฌ๋žŒ(->class๊ฐ€ ๋จ)์ผ ๊ฒฝ์šฐ
    -๋ณ€์ˆ˜(๋ช…์‚ฌ) : ์ด๋ฆ„, ๋‚˜์ด, ์ƒ๋…„์›”์ผ, ํ‚ค, ๋ชธ๋ฌด๊ฒŒ, ์‹œ๋ ฅ, ์ฃผ๋ฏผ๋ฒˆํ˜ธ...
    -๋ฉ”์„œ๋“œ(๋™์‚ฌ) : ๋ฐฅ์„ ๋จน๋Š”๋‹ค, ์ž ์„ ์ž”๋‹ค, ์ถœ๊ทผํ•œ๋‹ค, ํ‡ด๊ทผํ•œ๋‹ค...
    : ๋ชจ๋‹ˆํ„ฐ(->class๊ฐ€ ๋จ)์ผ ๊ฒฝ์šฐ
    -๋ณ€์ˆ˜ : ํฌ๊ธฐ, ํ™”์†Œ, ์ฃผ์‚ฌ์œจ, ๋ฒ„ํŠผ...
    -๋ฉ”์„œ๋“œ : ํ™”๋ฉด์„ ๋ณด์—ฌ์ค€๋‹ค, ๋ฐ๊ธฐ๋ฅผ ์กฐ์ ˆํ•œ๋‹ค, ํ™”๋ฉด์„ ๋ˆ๋‹ค...

  2. ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋ž€?
    : ์‚ฌ๋ฌผ์ด๋‚˜ ๊ฐœ๋…์ฒ˜๋Ÿผ ๋…๋ฆฝ๋˜๊ณ  ๊ตฌ๋ถ„๋˜๋Š” ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๊ณ , ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๊ฑด๋“ค์€ ๊ฐ์ฒด๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์ด๋‹ค. ์ด ๊ฐœ๋…์„ ์ปดํ“จํ„ฐ๋กœ ์˜ฎ๊ฒจ ๋†“์•„ ๋งŒ๋“ค์–ด๋‚ธ ๊ฒƒ์ด ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ด๋‹ค.

  3. ์ž๋ฐ”์—์„œ ๊ฐ์ฒด๋ž€??
    : ํด๋ž˜์Šค์— ์ •์˜๋œ ๋‚ด์šฉ์œผ๋กœ new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ƒ์„ฑ๋œ ๊ฒƒ

- ํด๋ž˜์Šค(class)๋ž€?

  1. ๊ฐ์ฒด์˜ ํŠน์„ฑ(๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ํ•œ ๊ฒƒ
  2. ํด๋ž˜์Šค ์ž‘์„ฑ ์‹œ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒƒ
    : ์ถ”์ƒํ™”, ์บก์Šํ™”๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ ์šฉ๋˜์–ด์•ผํ•จ

- ์ถ”์ƒํ™”

  1. ์œ ์—ฐ์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์ฒด์ ์ธ ๊ฒƒ(์ด๋ฆ„, ์ฃผ์†Œ, ๋‚˜์ด...)์€ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ์˜๋ฏธ
  2. ์ž‘์„ฑํ•˜๋ ค๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ ์ค‘ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ•„์š”ํ•œ ๊ณตํ†ต์ (์„ฑ๋ณ„, ํ•˜๋Š” ํ–‰๋™..)์„ ์ถ”์ถœํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •
  3. ์˜ˆ์‹œ

- ์ถ”์ƒํ™” ํ•ด๋ณด๊ธฐ

package edu.kh.oop.abstraction.model.vo;

// VO(Value Object) : ๊ฐ’ ์ €์žฅ์šฉ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ๋ชจ์•„๋‘๋Š” ํŒจํ‚ค์ง€

public class People { // ๊ตญ๋ฏผ(์‚ฌ๋žŒ) ํด๋ž˜์Šค
	
	// ํด๋ž˜์Šค๋ž€ : ๊ฐ์ฒด์˜ ํŠน์„ฑ(์†์„ฑ, ๊ธฐ๋Šฅ)์„ ์ •์˜ํ•œ ๊ฒƒ
	// == ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„
	
	// ์†์„ฑ == ๊ฐ’ == data
	// ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ
	// -> ๊ตญ๋ฏผ์ด๋ผ๋ฉด ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ๋งŒ ์ž‘์„ฑ(์ถ”์ƒํ™”)
	// ์ด๋ฆ„, ์„ฑ๋ณ„, ์ฃผ๋ฏผ๋ฒˆํ˜ธ, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ, ๋‚˜์ด

	public String name;
	public char gender;
	public String pNo; // "000000-0000000"
	public String address;
	public String phone; // 010-0000-0000
	public int age;
	// public double bitCoin; -> ๊ณตํ†ต์ ์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ œ๊ฑฐ
	
	// ๊ธฐ๋Šฅ == ํ–‰๋™ // method
	public void tax() {
		System.out.println("์„ธ๊ธˆ์„ ๋ƒ…๋‹ˆ๋‹ค.");
	}
	
	public void vote() {
		System.out.println("ํˆฌํ‘œ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ๊ผญํ•˜์„ธ์š”!");
	}
}
package edu.kh.oop.abstraction.model.service;

import edu.kh.oop.abstraction.model.vo.People;

// Service : ํŠน์ • ๊ธฐ๋Šฅ(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง)์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค
public class AbstractionService {
	
	public void ex1() {
		// ๊ตญ๋ฏผ ๊ฐœ์ฒด ๋งŒ๋“ค๊ธฐ
		People p1 = new People(); // ํŒจํ‚ค์ง€๊ฐ€ ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์— import ํ•ด์™€์•ผํ•จ
		// People p1 : People ๊ฐ์ฒด์— ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜ p1์„ ๋งŒ๋“ฌ
		// new People() : ์ƒˆ๋กœ์šด People ๊ฐ์ฒด๋ฅผ Heap ์˜์—ญ์— ์ƒ์„ฑํ•œ ๊ฒƒ
		
		// **ํด๋ž˜์Šค ์ด๋ฆ„์ด ์ž๋ฃŒํ˜•์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋œ๋‹ค.
		// ** ๊ทธ๋ž˜์„œ ํด๋ž˜์Šค๋ฅผ "์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•"์ด๋ผ๊ณ  ํ•œ๋‹ค! **
		
		p1.name = "ํ™๊ธธ๋™";		
		p1.age = 25;
		p1.gender = '๋‚จ';
		p1.phone = "010-1234-5678";
		p1.pNo = "200303-1234567";
		p1.address = "์„œ์šธ์‹œ ์ค‘๊ตฌ ๋‚จ๋Œ€๋ฌธ๋กœ 120 ๋Œ€์ผ๋นŒ๋”ฉ 3์ธต E๊ฐ•์˜์žฅ";
		// p1.์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์€ ์ง์ ‘ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์บก์Šํ™”(์ •๋ณด์€๋‹‰)์ด ์ „ํ˜€ ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋‹ค.
		// ์‹ค์ œ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ์ฝ”๋”ฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
		
		System.out.println("p1.name : " + p1.name);
		System.out.println("p1.age : " + p1.age);
		System.out.println("p1.gender : " + p1.gender);
		System.out.println("p1.phone : " + p1.phone);
		System.out.println("p1.pNo : " + p1.pNo);
		System.out.println("p1.address :" + p1.address);
	}
}

- ์บก์Šํ™”

: ๋ฐ์ดํ„ฐ์˜ ์ง์ ‘ ์ ‘๊ทผ์ œํ•œ์„ ์›์น™์œผ๋กœํ•œ๋‹ค.
: ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ง์ ‘์ ์ธ ์ ‘๊ทผ์„ ๋ง‰๊ณ , ๋Œ€์‹  ๊ฐ„์ ‘์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”์†Œ๋“œ๋ฅผ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•(๊ฐ„์ ‘ ์ ‘๊ทผ)

- ์บก์Šํ™” ์›์น™

  1. ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์€ private์„ ์›์น™์œผ๋กœ ํ•œ๋‹ค. (public ์•ˆ๋จ)
  2. ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ฒ˜๋ฆฌ๋ฅผ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ๋ฉค๋ฒ„ ๋ฉ”์†Œ๋“œ๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ž‘์„ฑํ•œ๋‹ค.
  3. ๋ฉค๋ฒ„ ๋ฉ”์†Œ๋“œ๋Š” ํด๋ž˜์Šค ๋ฐ–์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก public์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.(ํด๋ž˜์Šค ๋ฐ–์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋”ฉ -> ๊ฐ„์ ‘ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก)

- ์บก์Šํ™” ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

: getter / setter ์ด์šฉ

package edu.kh.oop.abstraction.model.vo;

public class People { // ๊ตญ๋ฏผ(์‚ฌ๋žŒ) ํด๋ž˜์Šค
	private String name;
	private char gender;
	private String pNo; // "000000-0000000"
	private String address;
	private String phone; // 010-0000-0000
	private int age;
	
	// ***๋ฐ์ดํ„ฐ ์ง์ ‘ ์ ‘๊ทผ ์ œํ•œ***
	// public(๊ณต๊ณต์˜) -> private(์‚ฌ์ ์ธ, ๊ฐœ์ธ์ ์ธ)์œผ๋กœ ๋ณ€๊ฒฝ
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public char getGender() {
		return gender;
	}

	public void setGender(char gender) {
		this.gender = gender;
	}

	public String getpNo() {
		return pNo;
	}

	public void setpNo(String pNo) {
		this.pNo = pNo;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	// ์บก์Šํ™”์—์„œ ์‚ฌ์šฉํ•  ๊ฐ„์ ‘ ์ ‘๊ทผ ๊ธฐ๋Šฅ(getter/setter)
	// alt + shift + s / ๋˜๋Š” ์ƒ๋‹จ Source ํƒญ
	//-> Generate getters / setters ํด๋ฆญ -> select all -> generate
	
}
package edu.kh.oop.abstraction.model.service;

import edu.kh.oop.abstraction.model.vo.People;

public class AbstractionService {
	
		//p1.name = "ํ™๊ธธ๋™";		
		p1.setName("ํ™๊ธธ๋™"); // setter
		
		//p1.age = 25;
		p1.setAge(25);
		
		//p1.gender = '๋‚จ';
		p1.setGender('๋‚จ');
		
		//p1.phone = "010-1234-5678";
		p1.setPhone("010-1234-5678");
		
		//p1.pNo = "200303-1234567";
		p1.setpNo("010-1234-5678");
		
		//p1.address = "์„œ์šธ์‹œ ์ค‘๊ตฌ ๋‚จ๋Œ€๋ฌธ๋กœ 120 ๋Œ€์ผ๋นŒ๋”ฉ 3์ธต E๊ฐ•์˜์žฅ";
		p1.setAddress("์„œ์šธ์‹œ ์ค‘๊ตฌ ๋‚จ๋Œ€๋ฌธ๋กœ 120 ๋Œ€์ผ๋นŒ๋”ฉ 3์ธต E๊ฐ•์˜์žฅ");
		
		// p1.00 = 00;๋ฐฉ์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์€ ์ง์ ‘ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์บก์Šํ™”(์ •๋ณด์€๋‹‰)์ด ์ „ํ˜€ ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋ฏ€๋กœ ๊ฐ„์ ‘์ ‘๊ทผ ๋ฐฉ์‹(setter / getter)์œผ๋กœ ์ด์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค.
		
		System.out.println("p1.name : " + p1.getName()); // getter
		System.out.println("p1.age : " + p1.getAge());
		System.out.println("p1.gender : " + p1.getGender());
		System.out.println("p1.phone : " + p1.getPhone());
		System.out.println("p1.pNo : " + p1.getpNo());
		System.out.println("p1.address :" + p1.getAddress());
		
		System.out.println();
		
		People p2 = new People();
		
		p2.setName("์ตœ์ง€์€");
		p2.setGender('์—ฌ');
		p2.setpNo("222222-2222222");
		p2.setAddress("์„œ์šธ ์ค‘๊ตฌ ๋‚จ๋Œ€๋ฌธ๋กœ 120");
		p2.setPhone("010-5555-5555");
		p2.setAge(30);
		
		System.out.println("p2 name : " + p2.getName());
		System.out.println("p2 gender : " + p2.getGender());
		System.out.println("p2 pNo : " + p2.getpNo());
		System.out.println("p2 address : " + p2.getAddress());
		System.out.println("p2 phone : " + p2.getPhone());
		System.out.println("p2 age : " + p2.getAge());
	}
}

- ๊ฐ์ฒด(Instance)์˜ ํ• ๋‹น

: new ์—ฐ์‚ฐ์ž์™€ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์—ด/ํ• ๋‹น๋œ ๊ฐ์ฒด ๊ณต๊ฐ„ -> ์ธ์Šคํ„ด์Šค

2. ํด๋ž˜์Šค(Class)

- ํด๋ž˜์Šค ์„ ์–ธ

- ํด๋ž˜์Šค์˜ ์ ‘๊ทผ์ œํ•œ์ž


-public : ๋ˆ„๊ตฌ๋‚˜ ์“ธ ์ˆ˜ ์žˆ์Œ. ์–ด๋””์„œ๋“ ์ง€ import ๊ฐ€๋Šฅ
-default : ์™ธ๋ถ€ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉ ๋ชปํ•จ(์ ‘๊ทผ๊ธˆ์ง€). ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

3. ํ•„๋“œ(Field)

- ์ž๋ฐ”์—์„œ์˜ ๊ฐ ๋ณ€์ˆ˜์˜ ํŠน์ง•

  1. ํด๋ž˜์Šค ๋ณ€์ˆ˜(Static์— ์ €์žฅ)
    : Static ๋ณ€์ˆ˜ -> Static์œผ๋กœ ์„ ์–ธ๋œ ๋ฉค๋ฒ„๋ณ€์ˆ˜
    : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ •์ ๋ฉ”๋ชจ๋ฆฌ(Static๋ฉ”๋ชจ๋ฆฌ) ์˜์—ญ์— ์ž๋™ ํ• ๋‹น
    : ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ ์ž๋™ ์†Œ๋ฉธ๋˜๋Š” ๋ณ€์ˆ˜
  2. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(Heap์— ์ €์žฅ)
    : new ์—ฐ์‚ฐ์ž์— ์˜ํ•ด์„œ ๋™์ ๋ฉ”๋ชจ๋ฆฌ(Heap)์— ํ• ๋‹น๋˜๋Š” ๊ฐ์ฒด(instance)์•ˆ์— ํ• ๋‹น๋˜๋Š” this์— ์˜ํ•ด ์ฐธ์กฐ๋œ๋‹ค.
    : ๊ฐ€๋น„์ง€์ฝœ๋ ‰ํ„ฐ์— ์˜ํ•ด์„œ ์‚ญ์ œ๋œ๋‹ค.
  3. ์ง€์—ญ ๋ณ€์ˆ˜(Stack์— ์ €์žฅ)
    : ๋ฉ”์†Œ๋“œ ๋˜๋Š” ์ œ์–ด๋ฌธ ์•ˆ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋กœ, Stack ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์—ˆ๋‹ค๊ฐ€ ๋ฉ”์†Œ๋“œ ๋˜๋Š” ์ œ์–ด๋ฌธ ์ข…๋ฃŒ ์‹œ ์†Œ๋ฉธ

- ํ•„๋“œ ํ‘œํ˜„์‹

  • [์ ‘๊ทผ์ œํ•œ์ž][์˜ˆ์•ฝ์–ด] ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋ช… [=์ดˆ๊ธฐ๊ฐ’];

- ํ•„๋“œ์˜ ์ ‘๊ทผ์ œํ•œ์ž


: ์บก์Šํ™” ์›์น™์— ์˜ํ•ด ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์€ private์„ ์›์น™์œผ๋กœ ํ•œ๋‹ค.

- Static ์˜ˆ์•ฝ์–ด ( : ํด๋ž˜์Šค ๋ณ€์ˆ˜)

  • ๊ฐ™์€ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•  ๋ชฉ์ ์˜ ํ•„๋“œ์— ์‚ฌ์šฉํ•˜๋ฉฐ,
    ํ”„๋กœ๊ทธ๋žจ start์‹œ์— ์ •์  ๋ฉ”๋ชจ๋ฆฌ(static) ์˜์—ญ์— ์ž๋™ ํ• ๋‹น๋˜๋Š” ๋ฉค๋ฒ„์— ์ ์šฉ

- final ์˜ˆ์•ฝ์–ด ( : ์ƒ์ˆ˜)

  • ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๊ณ„์† ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๋ณ€์ˆ˜์— ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์•ฝ์–ด
  • final ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์€ ํ•„๋“œ๋ช…์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐ

4. ์ƒ์„ฑ์ž

- ์ƒ์„ฑ์ž๋ž€?

  1. ๊ฐ์ฒด๊ฐ€ new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ• ๋‹น๋  ๋•Œ ๊ฐ์ฒด ์•ˆ์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ํ•„๋“œ ์ดˆ๊ธฐํ™” + ์ƒ์„ฑ ์‹œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• (๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ)
  2. ์ƒ์„ฑ์ž๋Š” ์ผ์ข…์˜ ๋ฉ”์†Œ๋“œ๋กœ ์ „๋‹ฌ๋œ ์ดˆ๊ธฐ๊ฐ’์„ ๋ฐ›์•„์„œ ๊ฐ์ฒด์˜ ํ•„๋“œ์— ๊ธฐ๋ก

- ์ƒ์„ฑ์ž ๊ทœ์น™

: ์ƒ์„ฑ์ž์˜ ์„ ์–ธ์€ ๋ฉ”์†Œ๋“œ ์„ ์–ธ๊ณผ ์œ ์‚ฌํ•˜๋‚˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์œผ๋ฉฐ ์ƒ์„ฑ์ž๋ช…์„ ํด๋ž˜์Šค๋ช…๊ณผ ๋˜‘๊ฐ™์ด ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•จ

- ์ƒ์„ฑ์ž ํ‘œํ˜„์‹

[์ ‘๊ทผ์ œํ•œ์ž][์˜ˆ์•ฝ์–ด] class ํด๋ž˜์Šค๋ช… {
[์ ‘๊ทผ์ œํ•œ์ž] ํด๋ž˜์Šค๋ช…() { }
[์ ‘๊ทผ์ œํ•œ์ž] ํด๋ž˜์Šค๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜) { (this.)ํ•„๋“œ๋ช… = ๋งค๊ฐœ๋ณ€์ˆ˜; }
}

- ๊ธฐ๋ณธ ์ƒ์„ฑ์ž

: ์ƒ์„ฑ์ž๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ํด๋ž˜์Šค ์‚ฌ์šฉ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ์ƒ์„ฑ

- ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ์ž

: ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
: ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ์ž ์ž‘์„ฑ ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ์ง€ ์•Š์Œ
: ์ƒ์†์—์„œ ์‚ฌ์šฉ ์‹œ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ž‘์„ฑ
: ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์ด์šฉํ•˜์—ฌ ์ž‘์„ฑ

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 7์›” 24์ผ

๊ธ€ ์ž˜ ๋ดค์Šต๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ