럿고의 개발 노트
[프로그래머스] 자바 중급 > Part1. Object 클래스 본문
[프로그래머스] 자바 중급
Part1. Object 클래스
1. Object와 오버라이딩
-
Object 클래스는 모든 클래스의 최상위 클래스
-
아무것도 상속받지 않는다면 자동으로 Object 클래스를 상속 받음
-
Object가 가지고 있는 메소드는 모든 클래스에서 사용이 가능하다는 의미를 뜻함.
public class Student {
/* object 클래스 : 모든 클래스의 최상의 클래스
* 아무것도 상속받지 않으면 자동으로 Object를 상속
* Object가 가지고 있는 메소드는 모든 클래스에서 다 사용 가능
*
* 아래의 3개는 모두 오버라이딩을 해서 사용해야 함
* equals : 객체가 가진 값을 비교할 때 사용
* 같은지를 기능을 제공하지만 기준은 오버라이딩으로 해줘야함.
* toString : 객체가 가지고 있는 값을 문자열로 반환
* hashCode : 객체의 해시코드 값 반환
* 해시코드는 객체별로 다른 값을 가지는 것이 좋음
* 자료구조에서 많이 사용된느 것이 해시코드
*/
String name;
String number;
int brithYear;
// 해시코드를 구하는 것은 수학식임
// 대도록 유일하지 않는 값을 반환
// 소수 중의 하나인 31값과 특정 수를 몇개 곱하여 만들고 있는 것을 볼 수 있음
// 해시코드를 만드는 방법은 다양한 방법이 있음
// 알고리즘을 공부하면 다양한 해시코드 구하는 법을 알수 있음.
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((number == null) ? 0 : number.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (number == null) {
if (other.number != null)
return false;
} else if (!number.equals(other.number))
return false;
return true;
}
@Override
public String toString() {
return "Student [name=" + name + ", number=" + number + ", brithYear=" + brithYear + "]";
}
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "홍길동";
s1.number = "1234";
s1.brithYear = 1995;
Student s2 = new Student();
s2.name = "홍길동";
s2.number = "1234";
s1.brithYear = 1995;
if(s1.equals(s2)) { // s1객체와 s2의 객체가 같은지를 비교하는 것
System.out.println("s1 == s2");
}else {
System.out.println("s2 != s2");
}
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
// equals와 hashCode는 object가 제공하는 것을 쓰고 있기 때문에 오버라이딩을 해줘야 함
System.out.println(s1); // 객체를 출력하면 자동으로 toString을 호출함.
System.out.println(s1.toString());
}
}
출처
'Java Note > [프로그래머스] 자바 중급(동영상 강의)' 카테고리의 다른 글
[프로그래머스] 자바 중급 > Part6. 어노테이션 (0) | 2020.02.04 |
---|---|
[프로그래머스] 자바 중급 > Part5. IO (0) | 2020.02.04 |
[프로그래머스] 자바 중급 > Part4. 날짜와 시간 (0) | 2020.02.04 |
[프로그래머스] 자바 중급 > Part3. java.util 패키지 (0) | 2020.01.31 |
[프로그래머스] 자바 중급 > Part2. java.lang 패키지 (0) | 2020.01.31 |
Comments