티스토리 뷰
12장 Object 클래스
모든 클래스는 Object 클래스를 상속받고 있다.
Object 클래스의 매소드
객체 처리를 위한 메소드
- String toString()
- boolean equals()
- int hashCode()
- Class<?> getClass()
- Object clone()
- void finalize()
toString
모든 경우에 toString를 overriding해서 사용하지 않아도 되지만 객체의 상태를 쉽게 보려면 해주는 것이 좋다.
public class Member {
public String name;
public String phone;
public String email;
public String toString() {
return "name" + this.name + "phone" + this.phone + "email" + this.email;
}
}
equals
- 참조 자료형에서 서로 같은지 비교하기 위해서 == 을 사용할 수 없다. == 은 객체의 주소값을 비교한다.
- 참조 자료형이 같은지 비교하기 위해서는 equals 메소드를 정의해야 한다.
- IDE(Integrated Development Environment)가 클래스와 필드를 보고 자동으로 만들어 주기도 한다.
'객체가 같다' 라는 말에서 주의해야 하는 부분이 있다.
객체가 가지고 있는 상태 값이 같은 것과 객체가 동일한 것과는 다르다는 점이다.
객체가 동일함을 비교하기 위해서는 객체의 주소값도 같아야한다.
hashCode
객체 마다의 고유값을 위해서 메모리 주소를 16진수로 리턴한다.
equals나 hashCode는 메소드를 만드는데 제약이 있다. 이 제약을 지키지 않으면 기존에 만들어져 있는 api를 사용할 때 문제가 발생할 수 있다.
그 제약을 정확히 알지 못 한다면 IDE의 자동완성 기능을 사용하는 것을 권장한다.
13장 인터페이스와 추상클래스, enum
인터페이스와 추상클래스
- 설계시 선언해 주면 개발할 때 기능을 구현하는 데 집중할 수 있다.
- 메소드 이름과 매개변수 선언의 격차를 줄일 수 있다.
- 선언과 구현을 구분할 수 있다.
인터페이스의 사용법
인터페이스를 만들기 위해서는 interface를 사용한다.
public interface MemberManager {
public boolean addMember(Mamber member);
}
인터페이스를 구현하기 위해서는 implements를 사용한다.
인터페이스에 선언한 추상메소드를 반드시 구현해야 한다.
public class MemberManagerImple implements MemberManager {
public boolean addMember(Mamber member) {
}
}
추상클래스의 사용법
추상클래스를 만들기 위해서는 abstract를 사용한다.
abstract 메소드가 있으면 반드시 abstract 클래스여야한다.
abstract 클래스는 생성할 수 없다.
public abstract class MemberManager {
public abstract boolean addMember(Mamber member);
public boolean removeMamber(String name) {
return false;
}
}
추상클래스를 구현하기 위해서는 extends를 사용한다.
추상클래스에 선언한 추상메소드를 반드시 구현해야 한다.
public class MemberManagerImple extends MemberManager {
public boolean addMember(Mamber member) {
return true;
}
}
final
- final 클래스는 다른 곳에 상속할 수 없다.
public final class FinalClass {
}
- final 메소드는 overriding 할 수 없다.
public class MemberManagerImple extends MemberManager {
public final boolean removeMamber(String name) {
return false
}
}
- final 변수는 값을 변경할 수 없다. => 상수
값을 변경할 수 없기 때문에 생성과 동시에 초기화가 같이 되어야 한다.
final int num = 1;
enum
상수집합 객체를 만들기 위해서는 enum을 사용한다.
public enum Month {
JANUARY,
FEBRUARY,
MARCH,
...
}
- enum과 연관된 데이터 묶기
public enum Month {
JANUARY("01"),
FEBRUARY("02"),
...
NOVEMBER("11"),
DECEMBER("12");
private String number;
Month(String number) {
this.number = number;
}
}
- Enum 클래스의 유용한 메소드
compareTo(E e)
ordinal()
name()
values()
'Java' 카테고리의 다른 글
자바의 신 10장 ~ 11장 (0) | 2020.03.22 |
---|---|
자바의 신 8장 ~ 9장 (0) | 2020.03.11 |
자바의 신 7장 (0) | 2020.03.02 |
자바의 신 5장 ~ 6 장 (0) | 2020.02.23 |
자바의 신 1장 ~ 4장 (0) | 2020.02.17 |
댓글