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
'๐๏ธ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ(Java) - API ํด๋์ค (3) Math ํด๋์ค (1) | 2023.01.26 |
---|---|
์๋ฐ(Java) - API ํด๋์ค (2) StringBuffer, StringBuilder (0) | 2023.01.26 |
์๋ฐ(Java) - ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (17) ๋ค์ด ์บ์คํ (0) | 2023.01.25 |
์๋ฐ(Java) - ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (16) ์ค์ฒฉ ์ธํฐํ์ด์ค (0) | 2023.01.25 |
์๋ฐ(Java) - ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (15) ์ค์ฒฉ ํด๋์ค (0) | 2023.01.25 |