java.lang.Object
๋ชจ๋ ํด๋์ค์ ์ต์์ ํด๋์ค
java.lang.Object
ํด๋์ค๋ ๋ชจ๋ ํด๋์ค์ ์ต์์ ํด๋์ค๋ก ๋ชจ๋ ํด๋์ค๋ Object ํด๋์ค๋ฅผ ์์ ๋ฐ๋๋ค.
๋ฐ๋ผ์ ๋ชจ๋ ํด๋์ค๋ Object ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ณ ์ผ๋ถ ๋ฉ์๋๋ฅผ override
ํด์ ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง final ๋ฉ์๋๋ overrideํ ์ ์๋ค.
Object ํด๋์ค๊ฐ ๋ค์ด์๋ java.lang ํจํค์ง๋ ์ปดํ์ผ๋ฌ์ ์ํด ์๋์ผ๋ก import๋๋ค.
๊ทธ๋์ java.lang ํจํค์ง์ ์๋ ํด๋์ค๋ ๋ฐ๋ก import ํ์ง ์์๋ ์ฌ์ฉํ ์ ์๋ค.
๊ธฐ๋ณธ ๋์ : ๊ฐ์ฒด์ ์ฃผ์๊ฐ ์ถ๋ ฅ
override ๋ชฉ์ : ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ๋ฌธ์์ด ํํ๋ก ํํ ํ๊ณ ์ ํ ๋
package kosta.oop;
public class AccountMain2 {
public static void main(String[] args) {
Account account1 = new Account("111-111","ํ๊ธธ๋",1000);
System.out.println(account1); //toString() ํธ์ถ => ์์ผ๋ฉด ๋ถ๋ชจํด๋์ค Object ํธ์ถ : ์ฃผ์๊ฐ์ ์ถ๋ ฅ
//Account toString() ์ค๋ฒ๋ผ์ด๋ฉ = ์์ ๊ฐ์ฒด์ ๋ด์ฉ์ด ์ถ๋ ฅ๋๋ค.
}
Account.java ์์ overrride ์ ์คํ๊ฒฐ๊ณผ
Account.java ์์ overrride ํ ์คํ๊ฒฐ๊ณผ
@Override
public String toString() {
return "Account [accountNo=" + accountNo + ",
ownerName=" + ownerName + ", balance=" + balance + "]";
}
๊ธฐ๋ณธ ๋์ :
==
์ฐ์ฐ ๊ฒฐ๊ณผ ๋ฐํ
override ๋ชฉ์ : ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ ์์นํ๋ ๊ฐ์ฒด์ฌ๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋์ผํจ์ ๊ตฌํํ๊ธฐ ์ํด
equals()๋ฅผ ์ฌ์ฉํด ๋ ๊ฐ์ฒด์ ๋์ผํจ์ ๋
ผ๋ฆฌ์ ์ผ๋ก override ํ ์ ์๋ค.
'๋ฌผ๋ฆฌ์ ๋์ผํจ'์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ ๊ฒ์, '๋
ผ๋ฆฌ์ ๋์ผํจ'์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ค๋ฅธ ์์น์ ์์ง๋ง ๊ฐ์ id์ ํ์ ๊ฐ์ฒด, ๊ฐ์ id์ ์ฃผ๋ฌธ ๊ฐ์ฒด์ ๊ฐ์ด ๋๋ฉ์ธ์ ๊ตฌ๋ถํ ์ ์๋ ๊ณ ์ ํ ๊ฐ๋ฑ์ ์ํด ๋์ผํ ๊ฒ์ ์๋ฏธํ๋ค.
Account.java์์ override ์ ์คํ๊ฒฐ๊ณผ
package kosta.oop;
public class AccountMain2 {
public static void main(String[] args) {
Account account1 = new Account("111-111","ํ๊ธธ๋",1000);
Account account2 = new Account("222-222", "ํ๊ธธ๋", 5000);
if(account1.equals(account2)) { //Object equals()ํธ์ถ : ์ฃผ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋น๊ต
System.out.println("๋์ผ์ธ ๊ณ์ข");
}else {
System.out.println("์๋ก๋ค๋ฅธ ๊ณ์ข");
}
}
}
Account.java์์ override ํ ์คํ๊ฒฐ๊ณผ
@Override
public boolean equals(Object obj) {
if(obj instanceof Account) {
return this.getOwnerName() == ((Account)obj).getOwnerName();
}else {
return false;
}
}
๊ธฐ๋ณธ ๋์ : JVM์ด ๋ถ์ฌํ ์ฝ๋๊ฐ. ์ธ์คํด์ค๊ฐ ์ ์ฅ๋ ๊ฐ์๋จธ์ ์ ์ฃผ์๋ฅผ 10์ง์๋ก ๋ฐํ
override ๋ชฉ์ : ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ ์์นํ ๊ฐ์ฒด๊ฐ ๋์ผ์ฑ์ ๊ฐ๊ธฐ ์ํด
ํด์์ฝ๋๋ JVM์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ณํํด์ ๋ถ์ฌํ๋ ์ฝ๋์ด๋ค.
๊ฐ์ฒด์ ๋ณธ์ฌ๋ณธ์ ๋ง๋๋ ๋ฉ์๋
Prototype์ผ๋ก ๋ถํฐ ๊ฐ์ ์์ฑ๊ฐ์ ๊ฐ์ง ๋ณต์ฌ๋ณธ์ ์์ฑ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ๋ณด์๋์ ์๋ฐฐ๋ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก ๋ณต์ ํ ๊ฐ์ฒด๋ Cloneable ์ธํฐํ์ด์ค๋ฅผ ๋ช ์ํด์ผ ํ๋ค.