DEVLOG

객체(Object) 본문

Java

객체(Object)

BINTHEWORLD 2022. 5. 23. 15:28

객체란?

사물이 아닌 객체 클래스가 따로 존재하고, 이를 의미함

모든 객체의 조상이므로 자바에서 모든 클래스는 암시적으로 Object 클래스를 상속받고 있음

모든 클래스가 공통으로 포함하고 있어야 하는 기능을 제공하기 위해서 존재


Archer.java

public class Archer {
	
	String name;
	String power;
	
	// 생성자 
	public Archer(String name, String power) {
		// 매개변수 초기화
		this.name = name;
		this.power = power;
	}
	
	public boolean equals(Object obj) {
		// temp는 Archer의 인스턴스화
		Archer temp = (Archer) obj; // object가 Archer의 부모클래스이므로 Archer형태로 변환 가능
		if(name == temp.name && power == temp.power)
			return true;
		else 
			return false;
	}
}

Main.java

public class Main {

	public static void main(String[] args) {
		// Archer 인스턴스 초기화
		Archer archer1 = new Archer("궁수1", "상");
		Archer archer2 = new Archer("궁수1", "상");
		
		// 두 인스턴스의 참조주소는 항상 다르다. (내부적으로 변수 값 같더라도)
		System.out.println(archer1 == archer2); // false 반환
		
		System.out.println(archer1.equals(archer2)); // true 반환
		
	}

}

내가 이해한 바로는 

Main.java에서 호출하는 equals 메소드는 Archer.java에 구현된 메소드이고, 이는 매개변수로 들어온 Object타입의 obj 변수를 Archer.java의 인스턴스화하므로 archer1과 archer2가 같은 주소값을 참조하게끔 한다.

 

그러므로 archer1 == archer2는 false를 반환하지만, archer1.equals(archer2)는 true를 반환하는 것 같다.

 

이 부분은 조금 더 알아봐야겠다.

'Java' 카테고리의 다른 글

[Java] 객체 지향 프로그래밍이란?  (0) 2022.07.30
오토 박싱 & 오토 언박싱  (0) 2022.06.15
다형성(Polymorphism)  (0) 2022.05.23
인터페이스(Interface)  (0) 2022.05.23
Final 키워드  (0) 2022.05.21
Comments