이번에는 자바의 상속 개념에 대해서 포스팅 할까 합니다
상속이란?(inheritance)
기존에 사용하던 클래스를 새롭게 만들 클래스에서 사용하고 싶을 때, 활용하는 문법 입니다!
여기저기 다른 블로그 포스팅 해주신 분들의 말을 조금 간단하게 종합해 봤는데 저도 많이 어렵더라구요
자바에서는 부모(parent class)와 자식(child class)가 만들어 질 수 있습니다.
또한, 모든 부모클래스의 변수와 메소드를 자식클래스에서 자신의 것 처럼 사용 할 수 있죠!
부모클래스로 부터 자식 클래스가 모든것을 물려
예시를 보시죠!
보시다시피 Graduate 클래스에는 아무것도 들어가 있지 않습니다!
하지만 Graduate이라는 클래스를 선언 해 주자마자 Student에 있는 name, age, grade등과 메소드인 toString()을 사용 할 수 있게 된거죠!
문법은
Public 자식 클래스 이름 extends 부모 클래스 이름{
}
이런식으로 사용이 가능 합니다!
다름은 메소드관련 예시입니다!
이번에 자식 클래스에 메소드를 넣어주었습니다
근데
같은 이름으로 부모 클래스에도 존재 하는 메소드 인데요
실행을 한번 시켜 볼까요?
이런 결과가 나왔습니다!
자식 클래스에 있는 메소드는 자식에 있는 메소드로 부모 클래스에 있는 메소드는 부모클래스에 있는 메소드로 실행이 되었네요! 같은 이름인데도 말이죠!
우리는 이걸 오버라이딩 (overriding)이라고 합니다!
저번에 포스팅한 오버로딩(overloading)이랑은 다른 개념입니다! 이름이 비슷하죠
자 이런 방법을 사용 할때 우리가 만약에 오타를 내면 어떡하죠???
같은 매소드인데 다른 클래스인걸 메소드 이름이 다른게 어찌보면 당연하니까 컴퓨터는 알아차리지 못하죠
그래서 하는 것이 어노테이션 주석 이라고 합니다
@Override 라고 말해주면 컴퓨터가 이걸 알아듣고 만일 오타가 생겼을 경우 알려주게 됩니다!
Super
자 이제 이 super라는 걸 써볼까 합니다
Super는 자식클래스가 생성자를 생성해 낼때 부모클래스의 것을 가져오는 것을 말합니다.
이렇게 사용해도 아까와 결과는 동일하게 나옵니다!
그래서 super는 부모 클래스의 이름을 대신해서 사용한다고 해도 무방합니다!
그래서 마찬가지로 메소드를 사용 할 때에도 super를 사용하여 부모클래스에 있는 메소드를 호출할 수 있습니다!
우리가 마지막으로 주의 할 점은 자바에서는 하나의 부모클래스와 하나의 자바클래스만을 추구합니다!
여러개의 부모클래스를 받을 수 없습니다!