Object

2023. 2. 1. 13:46ㆍjava

λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀λ₯Ό μƒμ†ν•˜κ³  μžˆλ‹€. (클래슀의 μ‹œμ‘°)

public class Object1 {
        public void aaa(){
            System.out.println("λ©”μ†Œλ“œ μ‹€ν–‰");
        }
}

μ•„λž˜μ²˜λŸΌ

public class Object1 extends Object{
        public void aaa(){
            System.out.println("λ©”μ†Œλ“œ μ‹€ν–‰");
        }
}

λ”°λΌμ„œ μ•„λž˜ 같은 μ½”λ“œλ„ κ°€λŠ₯. > λͺ¨λ“  클래슀의 객체λ₯Ό λ§Œλ“€κΈ° κ°€λŠ₯

Object a2 = new Cake();  μΌ€μ΄ν¬μ˜ λ©”μ†Œλ“œλŠ” μ‚¬μš©ν•  수 μ—†μŒ.
Object a1 = new Dog();

λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object λΆ€λͺ¨ 클래슀 덕뢄에 μ“Έ 수 μžˆλŠ” λ©”μ†Œλ“œκ°€ 4개 μžˆλ‹€.

κ·Έ 쀑 많이 μ“°λŠ” 2개λ₯Ό μ•Œμ•„λ³΄μž.

 

>>  toString(); 

객체의 정보λ₯Ό λ¬Έμžμ—΄λ‘œ ν‘œν˜„ν•˜λŠ” κΈ°λŠ₯

ν΄λž˜μŠ€μ—μ„œ λ§Œλ“€μ—ˆμœΌλ‹ˆκΉŒ κ·Έ 클래슀의 정보λ₯Ό 좜λ ₯ν•˜λŠ” λ©”μ†Œλ“œλ‘œ toString() λ©”μ†Œλ“œλ₯Ό

μ˜€λ²„λΌμ΄λ”©ν•΄μ„œ 정보λ₯Ό λ¬Έμžμ—΄λ‘œ μ›ν•˜λŠ”λŒ€λ‘œ ν‘œν˜„ κ°€λŠ₯.

ν‘œν˜„μ˜ 의미 : 객체가 κ°€μ§€κ³  μžˆλŠ” λ³€μˆ˜λ“€μ˜ 값을 λ¬Έμžμ—΄λ‘œ λ§Œλ“€μ–΄ 리턴.

toString μ˜€λ²„λΌμ΄λ”© ν•˜λŠ” 법:

마우슀 였λ₯Έμͺ½ - 생성 - λ©”μ†Œλ“œμž¬μ •μ˜

//λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀λ₯Ό μƒμ†ν•˜κ³  μžˆλ‹€.
public class Object1{
    private String name;
    private int age;

        public void aaa(){
            System.out.println("λ©”μ†Œλ“œ μ‹€ν–‰");
        }

    @Override   //λ§€κ°œλ³€μˆ˜, λ¦¬ν„΄νƒ€μž… λ°”κΎΈλ©΄ μ•ˆ 됨.
    public String toString() {
        return "이름 : " + name + ", λ‚˜μ΄ : " + age;
    }
}

toString 적용

public class ToStringTest {
    private String name;
    private int age;
    private String addr;
    private String tell;
    private String email;

    public void showInfo(){
        System.out.println("이름 : " + name);
        System.out.println("λ‚˜μ΄ : " + age);
        System.out.println("μ£Όμ†Œ : " + addr);
        System.out.println("μ—°λ½μ²˜ : " + tell);
        System.out.println("이메일 : " + email);

    }

    @Override
    public String toString() {
        return "ToStringTest{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", addr='" + addr + '\'' +
                ", tell='" + tell + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

-

public class ObjectTest2 {
    public static void main(String[] args) {
        ToStringTest t1 = new ToStringTest();
        String result1 = t1.toString();
        System.out.println(result1);
    }
}

μ§€κΈˆκΉŒμ§€ 정보 좜λ ₯으둜 showInfo λ©”μ†Œλ“œ λ§Œλ“€μ—ˆλ‹€λ©΄ toString으둜 μ‰½κ²Œ μ‚¬μš© κ°€λŠ₯.

public class ObjectTest2 {
    public static void main(String[] args) {
        ToStringTest t1 = new ToStringTest();
        String result1 = t1.toString();
        System.out.println(result1);

        //μœ„ μ½”λ“œμ™€ 동일
        System.out.println(t1.toString());
        //객체λͺ…을 좜λ ₯ν•˜λ©΄ μžλ™μœΌλ‘œ 객체λͺ… 뒀에 .toString()이 λΆ™μ–΄μ„œ μ‹€ν–‰.
        System.out.println(t1);  //객체λ₯Ό 좜λ ₯
    }
}

 

 

>>  equals();

 

μ§€κΈˆκΉŒμ§€ μš°λ¦¬κ°€ 썼던 λ¬Έμžμ—΄ 비ꡐ equalsλŠ” μ•„λž˜μ™€ κ°™λ‹€.

String name = "java";
name.equals("c++");

String 클래슀의 equals () λ©”μ†Œλ“œλŠ” String ν΄λž˜μŠ€κ°€ λ³„λ„λ‘œ λ§Œλ“  λ©”μ†Œλ“œκ°€ μ•„λ‹ˆλ‹€.

Object ν΄λž˜μŠ€μ—μ„œ μ„ μ–Έλœ equals() λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•˜μ—¬ λ¬Έμžμ—΄μ„ 비ꡐ할 수 μžˆλ„λ‘

κΈ°λŠ₯을 μž¬μ •μ˜ν•œ 것이닀.

 

eqauls()λŠ” κ°œμ²΄μ™€ λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄μ˜¨ 데이터가 같은지 λΉ„κ΅ν•˜μ—¬ μ°Έ, κ±°μ§“κ°’μœΌλ‘œ λ¦¬ν„΄ν•΄μ£ΌλŠ” κΈ°λŠ₯.

λΉ„κ΅μ˜ 기쀀은 ν΄λž˜μŠ€λ§ˆλ‹€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—

κ°œλ°œμžκ°€ equals() λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•΄μ„œ λΉ„κ΅μ˜ 기쀀을 μ½”λ“œλ‘œ κ΅¬ν˜„ν•΄μ•Ό 함. >> 비ꡐ κΈ°μ€€ 자유의 μ˜μ—­.

 

eqauls() μ˜€λ²„λΌμ΄λ”© ν•˜λŠ” 법:

마우슀 였λ₯Έμͺ½ - 생성 - λ©”μ†Œλ“œ μž¬μ •μ˜

public class Equals1 {
     String name;
     int age;

    @Override
    public boolean equals(Object obj) {    //λ¦¬ν„΄νƒ€μž…μ€ boolean으둜 μ€˜μ•Ό ν•œλ‹€.
        return 
    }
}

equals μ•ˆμ˜ λ§€κ°œλ³€μˆ˜ 해석 주의!  >> 무엇이든 λ§€κ°œλ³€μˆ˜λ‘œ μ“Έ 수 있음.

@Override            //λ§€κ°œλ³€μˆ˜λ‘œ obj νƒ€μž…μ΄ λ“€μ–΄μ˜€λŠ” 것이 μ•„λ‹ˆλΌ μ•„λž˜μ²˜λŸΌ 해석.
public boolean equals(Object obj) {  //()μ•ˆμ˜ 해석 : λ§€κ°œλ³€μˆ˜λ‘œ 무엇이든 전달할 수 μžˆλ‹€.
    return 
}

-

예λ₯Ό λ“€μ–΄
Object o = new Equals1();     >>  상속에 μ˜ν•΄ κ°€λŠ₯, but Equals1 μ•ˆμ— λ³€μˆ˜,λ©”μ†Œλ“œ μžˆλŠ”μ§€ λͺ¨λ¦„ 
Equals1 e = (Equals1)o;   // > ν˜• λ³€ν™˜ν•΄μ•Ό 함.
이와 같이 

equalsλ₯Ό λ¨Όμ € Object νƒ€μž…μœΌλ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›λŠ”λ‹€. λ“€μ–΄μ˜¨ λ§€κ°œλ³€μˆ˜λŠ” Object νƒ€μž…μ΄κΈ° λ•Œλ¬Έμ—

Equals1 클래슀 λ‚΄μ˜ ν•„λ“œλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€. κ·Έλž˜μ„œ Equals1둜 ν˜•λ³€ν™˜ (downcasting) 을 ν•΄μ€˜μ•Ό ν•œλ‹€.

public class Equals1 {
     String name;
     int age;

     public Equals1(String name, int age){
         this.name = name;
         this.age = age;
     }

    //이름과 λ‚˜μ΄κ°€ 같은 객체면 λ™μΌν•œ 객체둜.(κ°œλ°œμžκ°€ λ§ˆμŒλŒ€λ‘œ μ„€μ •)
    @Override            //λ§€κ°œλ³€μˆ˜λ‘œ object νƒ€μž…μ΄ λ“€μ–΄μ˜€λŠ” 것이 μ•„λ‹ˆλΌ μ•„λž˜μ²˜λŸΌ 해석.
    public boolean equals(Object obj) {  //()μ•ˆμ˜ 해석 : λ§€κ°œλ³€μˆ˜λ‘œ 무엇이든 전달할 수 μžˆλ‹€.
                                   //상속에 μ˜ν•΄ κ°€λŠ₯, but Equals1(μžμ‹ν΄λž˜μŠ€) μ•ˆμ— λ³€μˆ˜,λ©”μ†Œλ“œ μžˆλŠ”μ§€ λͺ¨λ¦„
        Equals1 e = (Equals1)obj;  // > ν˜• λ³€ν™˜ν•΄μ•Ό 함.

        if(name.equals(e.name) && age == e.age){
            return true;
        }
        else {
            return false;
        }
    }
}

-

public class EqualsTest1 {
    public static void main(String[] args) {
      
        Equals1 e1 = new Equals1("홍길동",20);
        Equals1 e2 = new Equals1("홍길동",25);

        boolean result = e1.equals(e2);
        System.out.println(result);
    }
}

이 ν΄λž˜μŠ€μ—μ„œ toString λ‹€μ‹œ μ—°μŠ΅ν•΄λ³΄μžλ©΄

@Override
public String toString() {
    return "Equals1{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
}

toString λ©”μ†Œλ“œ μΆ”κ°€

System.out.println(e1);  //객체λͺ… 뒀에 toString μƒλž΅ λ˜μ–΄ 있음.
System.out.println(e2);

좜λ ₯κ²°κ³Ό

 

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

String 클래슀  (0) 2023.02.02
@ : anotation  (0) 2023.02.01
인λ§₯κ΄€λ¦¬ν”„λ‘œκ·Έλž¨ (상속,λ‹€ν˜•μ„±,μ˜€λ²„λΌμ΄λ”©)  (0) 2023.02.01
상속2(심화)  (0) 2023.02.01
상속  (0) 2023.01.31