상속이란?
자바에서는 말하는 상속은 부모클래스가 자식클래스에게 private접근자가 아닌 모든 것을 물려주는 것으로, 부모클래스의 메소드부터 속성값까지 모든것을 자식클래스에서 따로 선언을 해줄 필요가 없이 전부 사용이 가능하게 해주는 요소이며, 클래스간의 연관성을 높여주며, 클래스의 재사용성을 증가시켜 주는 요소이다.
부모클래스와 자식 클래스
자바에서는 자식클래스에서 부모클래스를 정하는데, 이때 자식 클래스에서 부모 클래스를 정하는 양식은 이러하다
class 자식클래스 extends 부모클래스{
...
}
이와 같이 extends
명령어를 사용하여 부모클래스를 지정하며, 객체를 생성할때에도 아래와 같이 생성이 가능하다.
부모클래스 test=new 자식클래스();
이와 같이 부모 클래스를 선언하고 거기에 자식 클래스를 생성하는 규칙을 is a
규칙이라고 한다.
그리고 자식 클래스에서 부모 클래스의 요소를 사용하기 위해 사용하는 명령어를 super
이라고 하며, 예제는 다음과 같다.
class 부모클래스{
String testStr;
부모클래스(String str){
testStr=str;
}
void showTestStr(){
System.out.println(testStr);
}
}
부모 클래스에 String객체와 생성자, String 객체의 값을 출력 해주는 간단한 메소드까지 만들었다.
class 자식클래스 extends 부모클래스{
자식클래스(String str){
super(str);
}
}
자식클래스에서 부모클래스의 생성자를 사용하고 싶은 경우 super()
를 사용하여야 한다. 그러나 다른 메소드나 속성을 그대로 사용할 경우 따로 표기를 해줄 필요는 없다.
class Main{
public static void main(String[] args){
부모클래스 test=new 자식클래스("테스트");
test.showTestStr();
}
}
위와 같이 부모클래스를 선언하고 그곳에 자식클래스를 생성하여도 괜찮으며, 나중에 실력이 좋아지면 클래스의 종속성을 줄이기 위하여 자주 사용되는 기법중 하나이다. 그리고 위처럼 자식클래스에서 따로 showTestStr을 선언해 줄 필요 없이 그냥 객체를 선언해준 다음 사용하면 부모클래스에서 선언한대로 사용이 가능하다.
Object Class
Object클래스는 자바에서 모든 클래스가 상속 받고 있는 클래스로 최상위 클래스이다. 그 어떤 클래스라도 이 클래스를 묵시적으로 상속을 받고 있으며, 이 클래스는 아래와 같은 메소드를 상속한다.
함수명 | 인자값 | 반환값 |
---|---|---|
getClass | void | Class |
hashCode | void | int |
clone | void | Object |
toString | void | String |
notify | void | void |
notifyAll | void | void |
wait | long | void |
wait | long, int | void |
wait | void | void |
equals | Object | boolean |
finalize | void | void |
이와 같은 메소드를 상속하며, 여기에서 꼭 알아야하는 메소드는 equals()
,toString()
이 두가지 메소드인데 일단 equals()
메소드는 두개의 객체를 비교해주는 메소드이며, toString()
메소드는 객체의 문자열을 출력해주는 메소드이다.