[Java] Object ํด๋ž˜์Šค

JUNBEOM PARKยท2022๋…„ 2์›” 21์ผ
0

๐Ÿงจ Java

๋ชฉ๋ก ๋ณด๊ธฐ
25/33
post-thumbnail

๐Ÿค” Object ํด๋ž˜์Šค ?

java.lang.Object
๋ชจ๋“  ํด๋ž˜์Šค์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค

java.lang.Object ํด๋ž˜์Šค๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ผ๋ถ€ ๋ฉ”์†Œ๋“œ๋ฅผ overrideํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ final ๋ฉ”์†Œ๋“œ๋Š” overrideํ•  ์ˆ˜ ์—†๋‹ค.

Object ํด๋ž˜์Šค๊ฐ€ ๋“ค์–ด์žˆ๋Š” java.lang ํŒจํ‚ค์ง€๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์ž๋™์œผ๋กœ import๋œ๋‹ค.
๊ทธ๋ž˜์„œ java.lang ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ๋”ฐ๋กœ import ํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.



1. toString()

๊ธฐ๋ณธ ๋™์ž‘ : ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’ ์ถœ๋ ฅ
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 + "]";
	}




2. equals()

๊ธฐ๋ณธ ๋™์ž‘ : == ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
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;
		}
	}




3. hashCode()

๊ธฐ๋ณธ ๋™์ž‘ : JVM์ด ๋ถ€์—ฌํ•œ ์ฝ”๋“œ๊ฐ’. ์ธ์Šคํ„ด์Šค๊ฐ€ ์ €์žฅ๋œ ๊ฐ€์ƒ๋จธ์‹ ์˜ ์ฃผ์†Œ๋ฅผ 10์ง„์ˆ˜๋กœ ๋ฐ˜ํ™˜
override ๋ชฉ์  : ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•œ ๊ฐ์ฒด๊ฐ€ ๋™์ผ์„ฑ์„ ๊ฐ–๊ธฐ ์œ„ํ•ด

ํ•ด์‹œ์ฝ”๋“œ๋ž€ JVM์ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•ด์„œ ๋ถ€์—ฌํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.




4. clone()

๊ฐ์ฒด์˜ ๋ณธ์‚ฌ๋ณธ์„ ๋งŒ๋“œ๋Š” ๋ฉ”์†Œ๋“œ
Prototype์œผ๋กœ ๋ถ€ํ„ฐ ๊ฐ™์€ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง„ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑ
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ •๋ณด์€๋‹‰์— ์œ„๋ฐฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ณต์ œํ•  ๊ฐ์ฒด๋Š” Cloneable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.

profile
DB ์—”์ง€๋‹ˆ์–ด๐Ÿ‘

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