GiantStepDEV

Object ํด๋ž˜์Šค๋ž€?

  • java.lang ํŒจํ‚ค์ง€ ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค
  • ๋ชจ๋“  ์ž๋ฐ” ํด๋ž˜์Šค์˜ ์ตœ๊ณ  ์กฐ์ƒ ํด๋ž˜์Šค
  • ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์Œ. -> Object๊ฐ€ ๊ฐ€์ง„ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

toString() ๋ฉ”์†Œ๋“œ

  • ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜
    ์ด ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฌธ์ž์—ด์€ ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ๊ตฌ๋ถ„์ž๋กœ '@'๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ,
    ๊ทธ ๋’ค๋กœ 16์ง„์ˆ˜ ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€ ๋จ.
  • 16์ง„์ˆ˜ ํ•ด์‹œ ์ฝ”๋“œ ๊ฐ’์€ ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์œผ๋กœ, ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋ชจ๋‘ ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜ํ™˜ ๋จ.
class Student {
    int id;
    String name;
}

์œ„ ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋จ.

class Student extends Object {
    int id;
    String name;
}
public class Main {
    public static void main(String[] args) {
        Student student1 = new Student();
        Student student2 = new Student();
        System.out.println(student1.toString());
        System.out.println(student2.toString());
        
        System.out.println(student1.equals(student2));
        student1 = student2;
        System.out.println(student1.equals(student2));
        System.out.println(student1.toString());
        System.out.println(student2.toString());
    }
}
Objectํด๋ž˜์Šค0126.Student@58ceff1
Objectํด๋ž˜์Šค0126.Student@7c30a502
false
true
Objectํด๋ž˜์Šค0126.Student@7c30a502
Objectํด๋ž˜์Šค0126.Student@7c30a502
์ž๋ฐ”์—์„œ toString() ๋ฉ”์†Œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ API ํด๋ž˜์Šค๋งˆ๋‹ค ์ž์ฒด์ ์œผ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ†ตํ•ด ์žฌ์ •์˜๋˜์–ด ์žˆ์Œ.

equals() ๋ฉ”์†Œ๋“œ

  • ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜์™€ ๋น„๊ตํ•˜์—ฌ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜
  • ์ฐธ์กฐ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์„ ๋น„๊ตํ•˜๋ฏ€๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐ์ฒด๋Š” ์–ธ์ œ๋‚˜ false๋ฅผ ๋ฐ˜ํ™˜ํ•จ.

โญ ์œ„ ์˜ˆ์ œ ์ฝ”๋“œ ์ฐธ๊ณ 

clone() ๋ฉ”์†Œ๋“œ

  • ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์ œํ•˜์—ฌ, ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด ๋ฐ˜ํ™˜

์–•์€ ๋ณต์‚ฌ

  • ๋‹จ์ˆœํžˆ ํ•„๋“œ๊ฐ’๋งŒ ๋ณต์‚ฌํ•ด์„œ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  • ํ•„๋“œ ๊ฐ’๋งŒ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ํƒ€์ž…์ผ ๊ฒฝ์šฐ ๊ฐ’ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚˜๊ณ , ํ•„๋“œ๊ฐ€ ์ฐธ์กฐ ํƒ€์ž…์ผ ๊ฒฝ์šฐ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ€ ๋ณต์‚ฌ๋˜๋ฏ€๋กœ ์–•์€ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚จ.
public class CloneMain {
    public static void main(String[] args) {
        Member member1 = new Member("1234567","์ฝฉ๋ฏธ","khbigdata",30,true);
        Member member2 = member1;

        member2.age = 300;
        member2.name = "๋ถˆ์ฃผ๋จน";

        System.out.println("name : " + member1.name);
        System.out.println("age : " + member1.age);

        System.out.println("name : " + member2.name);
        System.out.println("age : " + member2.age);
    }
}
name : ๋ถˆ์ฃผ๋จน
age : 300
name : ๋ถˆ์ฃผ๋จน
age : 300

โœ… ์ฃผ์†Œ๊ฐ€ ๋ณต์‚ฌ๋˜์–ด์„œ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด ๋‘ ๊ฐœ๊ฐ€ ๊ฐ™์ด ๋ฐ”๋€œ

 

๊นŠ์€ ๋ณต์‚ฌ

โžก๏ธ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด clone() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, clone() ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณดํ˜ธ๋ฅผ ์ด์œ ๋กœ Cloneable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ.

โœ… ์–•์€ ๋ณต์‚ฌ์™€ ๋‹ฌ๋ฆฌ ๊ฐ’์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ณต์‚ฌ๋˜์–ด์„œ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด ๋ฐ”๊พผ ๊ฐ์ฒด๋งŒ ์ ์šฉ๋จ.

public class Member implements Cloneable {
    String id;
    String name;
    String password;
    int age;
    boolean isAdult;

    public Member(String id, String name, String password, int age, boolean isAdult) {
        this.id = id;
        this.name = name;
        this.password = password;
        this.age = age;
        this.isAdult = isAdult;
    }
    public Member getMember() {
        Member cloned = null;
        try {
            cloned = (Member) clone();
        } catch(CloneNotSupportedException e) {}
        return cloned;
    }
}

โœ… Cloneable : ์‹ค์ œ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋ฉ”์†Œ๋“œ๋Š” ์—†์ง€๋งŒ implements ํ›„ ์‚ฌ์šฉ..

      ๋‹จ์ง€ clone() ๋ฉ”์†Œ๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ.

โœ… clone()์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ๋˜‘๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ํ•˜๋‚˜ ๋” ์ƒ๊น€.(๊ฐ’๊นŒ์ง€ ๋ณต์‚ฌ๋˜๋Š” ๊นŠ์€ ๋ณต์‚ฌ)

     clone() ํ˜ธ์ถœํ•ด์„œ ๋ณต์‚ฌ๋œ ์ฃผ์†Œ๊ฐ’์ด Member ํ˜•์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด cloned ์ฐธ์กฐ ๋ณ€์ˆ˜์— ๋Œ€์ž….

     ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ main์—์„œ ๋ฐ˜ํ™˜๋œ cloned๊ฐ€ member2์— ๋Œ€์ž…๋  ์ˆ˜ ์žˆ์Œ.

public class CloneMain {
    public static void main(String[] args) {
        Member member1 = new Member("1234567","์ฝฉ๋ฏธ","khbigdata",30,true);
        Member member2 = member1.getMember();

        member2.age = 300;
        member2.name = "๋ถˆ์ฃผ๋จน";

        System.out.println("name : " + member1.name);
        System.out.println("age : " + member1.age);

        System.out.println("name : " + member2.name);
        System.out.println("age : " + member2.age);
    }
}
name : ์ฝฉ๋ฏธ
age : 30
name : ๋ถˆ์ฃผ๋จน
age : 300

 

profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!