[Java] class ์ƒ์„ฑ์ž

JTIยท2022๋…„ 10์›” 24์ผ
0

โ˜•๏ธย  Java

๋ชฉ๋ก ๋ณด๊ธฐ
10/59
post-thumbnail

๐Ÿ’ก ํด๋ž˜์Šค ํ˜•๊ณผ ์ฐธ์กฐ

  • ๊ฐ€์ƒ์„ธ๊ณ„ = ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
  • ์ธ์Šคํ„ด์Šค = heap ์˜์—ญ ์•ˆ์— ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ

์ง€์—ญ์—์„œ ์ €์žฅ๋˜๋Š” ๊ณณ์ด ์žˆ๊ณ  ๋™์ ์œผ๋กœ ์ €์žฅ๋˜๋Š” ๊ณณ์ด ์žˆ๋Š”๋ฐ,
malloc()๋Š” c์–ธ์–ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ํ•จ์ˆ˜๊ณ  Java๋Š” new๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์ด๋Ÿฐ new๋ผ๋Š” ์• ๋Š” heap์— ์ €์žฅ์ด๋œ๋‹ค.
๊ทธ๊ฒŒ ์•„๋‹Œ ์ง€์—ญ๋ณ€์ˆ˜๋Š” STACK์— ์ €์žฅ๋œ๋‹ค.

๐Ÿ’กString ํƒ€์ž…์˜ ์ง„์‹ค

intํ˜•์ด๋‚˜ doubleํ˜• ๊ฐ™์€ ๊ธฐ๋ณธํ˜•(primitive type)์ด ์•„๋‹ˆ๋ผ, ํด๋ž˜์Šค ํƒ€์ž…์ด๋‹ค.

int, boolean ์ด๋Ÿฐ ๊ฐ’๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ String๋งŒ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ์™œ์ผ๊นŒ?
ํด๋ž˜์Šค ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฒดํ™” ํ•œ ๊ฒƒ์ด๊ณ  ๊ธฐ๋ณธํ˜•์ด ์•„๋‹Œ ์ฃผ์†Œ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฐธ์กฐํ˜•์ด๋‹ค.

โŒ ํšจ์œจ์ด ๋‚˜์œ String์˜ ์‚ฌ์šฉ

public class Main {
	public static void main(String[] args) {
    	String str = new String("์•ˆ๋…•ํ•˜์„ธ์š”"); // ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ
        System.out.println(str);
    }
}

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด๋„ ์—๋Ÿฌ๋Š” ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, String๋งŒ ์˜ˆ์™ธ๋กœ ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ฒŒ๋” Java์—์„œ ์„ค๊ณ„๋ฅผ ํ•ด๋†จ๋‹ค.

์˜คํžˆ๋ ค String์„ new๋กœ ์ง€์ •ํ–ˆ์„ ๋•Œ, ํšจ์œจ์ด ๋” ๋‚ฎ์•„์ง„๋‹ค.
๊ทธ๋ž˜์„œ classํƒ€์ž…์ด๊ธด ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ธ์Šคํ„ด์Šคํ™” ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ’ก ์ƒ์„ฑ์ž(constructor)

newํ–ˆ์„ ๋•Œ ์•„๋ฌด ๊ฐ’๋„ ์„ค์ •๋˜์ง€ ์•Š์•„ ๊ท€์ฐฎ์Œ. ์ค„์ด ๊ธธ์–ด์ง„๋‹ค.

์ด๋Ÿด๋•Œ, ์ƒ์„ฑ์ž๋ฅผ class ์•ˆ์—๋‹ค๊ฐ€ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์„œ main์—๋‹ค๊ฐ€ ๋„ฃ์–ด์ค€๋‹ค.

์›๋ž˜๋ผ๋ฉด ๋ณ€์ˆ˜์—๋‹ค๊ฐ€ ์ดˆ๊ธฐ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ์—๋Ÿฌ๊ฐ€ ์•ˆ๋‚˜๋Š”๋ฐ,
์ƒ์„ฑ์ž๋Š” ์ดˆ๊ธฐ๊ฐ’์„ ์ž๋™์œผ๋กœ ์„ค์ •ํ•ด์ค˜์„œ ์ดˆ๊ธฐ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์•„๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

//์˜ˆ์‹œ
class Drink {
	private int drinkNum;
	private String name;
	private int price;
	
    // Drink ์ƒ์„ฑ์ž
	public Drink(int drinkNum, String name, int price) {
		setDrinkNum(drinkNum);
		setName(name);
		setPrice(price);
	}

โ—๏ธ ํ•„๋“œ์˜ ์ดˆ๊ธฐ๊ฐ’

  • int, short, long: 0
  • char: \u0000
  • boolean: false
  • int[]: null
  • String: null

๋ฐฐ์—ด๊ณผ String์€ ์ฐธ์กฐํƒ€์ž…์ด์—ฌ์„œ null๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.

โ—๏ธ ์ƒ์„ฑ์ž์˜ ์˜ค๋ฒ„๋กœ๋“œ

public class Hero {
	String name;
    int hp;
    Sword sword;
    
    //๊ธฐ๋ณธ ์ƒ์„ฑ์ž
    Hero() {
    	this.hp = 100;
        this.name = "๋ฐ•๋•ก๋•ก";
    }
    //์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋“œ
    Hero(String name) {
    	this.hp = 100;
        this.name = name;
    }
}

ํŒŒ๋ผ๋ฏธํ„ฐ ์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž์ด๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ์ž๋กœ ์ด๋ฆ„์„ ๊ผญ ๋„ฃ๊ฒŒ ์ง€์ •ํ•ด๋†จ๋Š”๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฆ„์„ ๋‚˜์ค‘์— ์ •ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๊ตณ์ด ์ด๋ฆ„์„ ๋ฐ”๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ฒŒ๋” ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋„ฃ์–ด๋„ ๊ทธ๋งŒ ์•ˆ๋„ฃ์–ด๋„ ๊ทธ๋งŒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค!

โญ•๏ธ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ 1๊ฐœ ์ด์ƒ์˜ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง„๋‹ค.

= ๋ฐ˜๋“œ์‹œ ์ •์˜.

์ƒ์„ฑ์ž๋ฅผ 1๊ฐœ๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณธ๋‹ค.

๐Ÿ’ก ์ƒ์„ฑ์ž์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ

์ƒ์„ฑ์ž๋Š” ๋ฉ”์„œ๋“œ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ์ง€๋งŒ ๋ฉ”์„œ๋“œ๋Š” ์•„๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฑฐ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค.

โœ”๏ธ this();
: ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ

Hero(String name) {
	this(); // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
    this.name = name; // ์œ„์— ์ •์˜๋œ ๋ฉค๋ฒ„๋ณ€์ˆ˜ name์ด๋ž‘ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ name๊ณผ ์—ฐ๊ฒฐ์ง“๊ธฐ
}

this.name = name; ์—ฌ๊ธฐ์„œ this๋ฅผ ๋นผ๋ฒ„๋ฆฌ๋ฉด name = name์œผ๋กœ ๋ฌด์˜๋ฏธํ•œ ์ฝ”๋“œ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค.
๊ทธ๋ž˜์„œ ๋‚ด๊ป€์ง€ ๋‹ˆ๊ป€์ง€์ธ์ง€๋ฅผ ์•Œ์•„์•ผ ๋˜๋‹ˆ๊นŒ ๋‚ด ์ด๋ฆ„์ด๋ž‘ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ด๋ฆ„์„ ์—ฐ๊ฒฐ์ง€์–ด์•ผ ํ•œ๋‹ค.

this(); ๋‚ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

์ƒ์„ฑ์ž๋Š” ์ƒ์„ฑ์ž๋ผ๋ฆฌ ํ˜ธ์ถœ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ’ก ๊ฐ™์€ ํด๋ž˜์Šค์—์„œ ์ž‘์„ฑํ•ด๋„, ๊ฐ๊ฐ์˜ ์ธ์Šคํ„ด์Šค์—์„œ ๋ณ„๋„์˜ ํ•„๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค.

public class Hero {
	String name;
    int hp;
    int money;
}

๐Ÿ’ก static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํ•„๋“œ๋ฅผ ๊ณต์œ 

public class Hero {
	String name;
    int hp;
    static int MONEY; //  Hero๊ฐ์ฒด๋“ค์—๊ฒŒ ๊ณต์œ 
}

โœ๏ธ ์ธ์Šคํ„ด์Šค๋กœ๋ถ€ํ„ฐ ์ •์  ํ•„๋“œ money์— ์ ‘๊ทผํ•ด ๋‚ด์šฉ์„ ํ‘œ์‹œ

public class Main {
	public static void main(String[] args) {
    	Hero hero1 = new Hero();
        Hero hero2 = new Hero();
        Hero. MONEY = 100;
        
        System.out.println(Hero.MONEY); // 100
        System.out.println(hero1.MONEY); // 100
        
        hero1.MONEY = 300;
        System.out.println(hero2.MONEY); // 300
        // hero1.MONEY = hero2.MONEY: ํ•œ์ชฝ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค๋ฅธ์ชฝ๋„ ๋ณ€๊ฒฝ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค.
    }
}

MONEY๋Š” ๊ณต์œ ์ž์›์ด๊ธฐ ๋•Œ๋ฌธ์— hero1์„ ์ง€์ •ํ•ด์ค€๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ชจ๋“  hero๋“ค์—๊ฒŒ ์˜ํ–ฅ์ด ๊ฐ„๋‹ค.

Hero ์ƒ์„ฑ์ž์•ˆ์— MONEY๋ฅผ ์จ๋ดค์ž ์˜๋ฏธ๊ฐ€ ์—†์ง€๋งŒ, ๊ทธ๋ž˜๋„ hero๋“ค์—๊ฒŒ ๊ณต์œ ํ•  MONEY๋ผ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์•ˆ์— ์จ๋†“์€ ๊ฒƒ.

static์„ ์ง€์ •ํ•œ ๋ณ€์ˆ˜๋ฅผ ์“ธ ๋•Œ, ์•ž์— ํด๋ž˜์Šค ์ด๋ฆ„์„ ์•ž์— ๋ถ™์—ฌ์ค€๋‹ค.

โœ๏ธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์ง€ ์•Š์•„๋„ ์ •์  ํ•„๋“œ์— ์ ‘๊ทผ๋œ๋‹ค.

public class Main {
	public static void main(String[] args) {
    //์˜์›…์„ 1๊ฐœ๋„ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ์ƒํ™ฉ
    Hero.MONEY = 100;
    System.out.println(Hero.MONEY);
    }
}

static์€ ๋ณ„๋„์˜ ๊ณต๊ฐ„์— ์ €์žฅ์ด ๋˜์–ด์žˆ๋‹ค. ์œ„์—๋„ ๋งํ–ˆ๋“ฏ์ด Hero๋ผ๋Š” ๊ฐ์ฒด์™€ ๋ฌด๊ด€ํ•˜๋‹ค. ๊ณต์œ ์ž์›์ด๊ธฐ ๋•Œ๋ฌธ์—!!

Hero๊ฐ€ ์žˆ๋“ ์—†๋“  ๋ณ„๋„์˜ ๊ณต๊ฐ„์— ์ €์žฅ์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๋ณธ๋‹ค.

โœ๏ธ ์ •์ ๋ฉ”์„œ๋“œ ์˜ˆ

public class Hero {
	String name;
    int hp;
    static int MONEY;
    Sword sword;
    
    static void setRandomMoney() {
    	Hero.MONEY = (int)(Math.random() * 1000) + 1;
        // 
    }
...
(main)
	Hero.money = 100; // ์•ž์— ํด๋ž˜์Šค ์ด๋ฆ„ ๊ผญ!

โœ๏ธ ์ •์ ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ์—‘์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ •์  ๋ฉค๋ฒ„๋งŒ ๊ฐ€๋Šฅ

public class Hero {
	String name;
    int hp;
    static int money;
    Sword sword;
    
    static void setRandomMoney() {
    	Hero.money = (int)(Math.random() * 1000) + 1;
        System.out.println(this.name + "์˜ ์†Œ์ง€๊ธˆ์„ ์ดˆ๊ธฐํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.") // ์—๋Ÿฌ. ์ผ๋ฐ˜๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ. ์ •์ ์€ ์ •์ ๋งŒ!!!
    }
}

โŒ setter / getter ์›ฌ๋งŒํ•ด์„œ๋Š” staic โŒ

static void setname(String name) {
	this.name = name;
}

์ด๋ฆ„์„ ๋ฐ”๊ฟ€๋ ค๊ณ  ์ด๋Ÿฐ์‹์œผ๋กœ ๋‘๋Š” ๊ฒƒ์€ ์•ˆ๋œ๋‹ค.
์™œ๋ƒ, static์€ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค. ๊ทธ๋ƒฅ ๋‹ค๋ฅธ ์• ๋“ค๋กœ ๋ด์•ผ๋œ๋‹ค.
static ๋ถ™์€ ์• ๋“ค์€ ๊ทธ๋ƒฅ ์“ธ ๊ณณ์ด ์—†์–ด์„œ ์•ˆ์—๋‹ค๊ฐ€ ์“ด๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
๊ทธ๋ž˜์„œ ์ด๋ฆ„์„ ๋ฐ”๊พผ๋‹ค๋˜์ง€ ๊ฐ–๊ณ ์˜จ๋‹ค๋˜์ง€์˜ ๊ธฐ๋Šฅ์—์„œ๋Š” static์ด ์—†์–ด์•ผ ํ•œ๋‹ค.
์™„์ „ ๊ณตํ†ต์ ์ธ ๊ฒƒ, ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜์ง€ ์•Š์„ ๋•Œ static์„ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“Œ ๋งˆ์ง€๋ง‰ ์ •๋ฆฌ

โœ”๏ธ ํด๋ž˜์Šคํ˜•์˜ ์ฐธ์กฐ

  • ํด๋ž˜์Šคํ˜• ๋ณ€์ˆ˜์˜ ์•ˆ์—๋Š” "์ธ์Šคํ„ด์Šค์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฒˆ์ง€"๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.
  • ์–ด๋–ค ํด๋ž˜์Šคํ˜• ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๋ฉด, ๋ฒˆ์ง€์ •๋ณด๋งŒ ๋ณต์‚ฌ๋œ๋‹ค.
  • ํด๋ž˜์Šคํ˜•์€ ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ์˜ ์ธ์ˆ˜, ๋ฆฌํ„ด ๊ฐ’์˜ ํ˜•์œผ๋กœ์„œ๋„ ์ด์šฉ๋œ๋‹ค.

โœ”๏ธ ์ƒ์„ฑ์ž

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

โœ”๏ธ ์ •์  ๋ฉค๋ฒ„

  • static ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์–ด ์žˆ๋Š” ์ •์  ๋ฉค๋ฒ„(ํ•„๋“œ ๋˜๋Š” ๋ฉ”์„œ๋“œ)๋Š”
  1. ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ, ํด๋ž˜์Šค์— ์‹ค์ฒด๊ฐ€ ์ค€๋น„๋œ๋‹ค.
  2. "ํด๋ž˜์Šค๋ช…, ๋ฉค๋ฒ„๋ช…", "์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ช…, ๋ฉค๋ฒ„๋ช…"์˜ ์–ด๋””์—๋„ ๊ฐ™์€ ์‹ค์ฒด์— ์—‘์„ธ์Šคํ•˜๊ฒŒ ๋œ๋‹ค.
  3. ์ธ์Šคํ„ด์Šค๋ฅผ 1๊ฐœ๋„ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์ด์šฉ ๊ฐ€๋Šฅ.
  • ์ •์  ๋ฉ”์„œ๋“œ๋Š” ๊ทธ ๋‚ด๋ถ€์— ์ •์ ์ด์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋‚˜ ํ•„๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
profile
Fill in my own colorful colors๐ŸŽจ

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