자바에서 상속은 핵심 개념 중 하나이다.
상속을 이용하여 기존 클래스의 특성과 기능을 새로운 클래스에서 물려받을 수 있으며, 이를 이용하여 코드의 재사용성과 학장성을 높일 수 있다는 장점을 가지고 있다.
▷ 상속(Inheritance)
상속은 다른 클래스를 사용하기 위한 방법 중 하나이다.
그러나 상속은 다른 클래스를 확장(extends)하여 재사용하는 기법이다.
상속을 통해 기본 클래스, 부모 클래스의 기능을 하위 클래스, 자식 클래스가 사용할 수 있다.
간단하게 아래 코드를 통해 구현 방법에 대해 알아보자.
| 상속 생성 방법
class 부모클래스 {
// 부모 클래스의 속성과 메소드
}
class 자식클래스 extends 부모클래스 {
// 자식 클래스의 속성과 메소드
}
다른 클래스를 상속받으면 상속해 준 클래스에 있는 메소드와 멤버변수뿐만 아니라 자체적으로 다른 멤버변수나 메소드를 추가하여 확장 사용이 가능하다.
이렇게 상속을 사용하여 코드 재사용성과 유지보수성 향상, 다양한 객체가 동일한 인터페이스를 구현할 수 있어 객체를 동적으로 처리할 수 있다.
한 예제를 통해 더욱 자세하게 알아보자.
class Info{ // 부모 클래스
double width; // 멤버변수
double height; // 멤버변수
void printSize(){ // 메소드
System.out.println("width : " + width);
System.out.println("height : " + height);
}
}
class Cal extends Info{ // 자식 클래스(상속)
String style;
double calSize(){
return width * height; // width와 height, printSize()를 상속 받음.
}
void printStyle(){
System.out.println("스타일 종류 : " + style);
}
}
class Main{
public static void main(String[] args){
Cal cal = new Cal(); // new를 사용하여 객체화
cal.width = 42.6; // Info클래스와 Cal에 있던 객체들을 모두 사용할 수 있음.
cal.height = 96.5;
cal.style = overfit;
System.out.println("옷 정보");
cal.printSize();
cal.printStyle();
}
}
부모 클래스인 Info를 자식 클래스인 Cal이 상속 받아 Info의 멤버변수와 메소드를 사용할 수 있게 되었다.
또한 Main 클래스에서 객체화를 통해 모든 객체들을 불러와 사용할 수 있게 되었다.
마지막으로 상속하는 과정에서 많이 사용되는 것들에 대해 알아보자.
| 메소드 오버라이딩
상속받은 메서드를 자식 클래스에서 변경할 필요가 있을 때, 메서드 오버라이딩(Method Overriding)을 사용한다.
이는 부모 클래스의 메서드를 자식 클래스에서 재정의하여 새로운 동작을 제공하는 것이다.
class 부모클래스 {
void sayHello() {
System.out.println("Hello from 부모클래스");
}
}
class 자식클래스 extends 부모클래스 {
@Override
void sayHello() {
System.out.println("Hello from 자식클래스");
}
}
| super 키워드
super 키워드는 부모 클래스의 멤버(변수나 메서드)에 접근할 때 사용된다. 오버라이딩된 메서드에서 부모 클래스의 메서드를 호출할 때 유용하게 사용된다.
class 부모클래스 {
void display() {
System.out.println("부모 클래스의 display");
}
}
class 자식클래스 extends 부모클래스 {
@Override
void display() {
super.display(); // 부모 클래스의 display() 호출
System.out.println("자식 클래스의 display");
}
}
super.display() 통해 부모 클래스의 display 메서드를 호출한 후, 자식 클래스의 추가 로직을 실행한다.
| final 키워드
final 키워드는 클래스, 메서드, 그리고 변수에 사용할 수 있다. 클래스에 사용되면, 해당 클래스를 상속할 수 없게 하고, 메서드에 사용되면 오버라이딩을 금지한다.
final class 부모클래스1 {
// 이 클래스는 더 이상 상속될 수 없음
}
class 자식클래스1 extends 부모클래스1{
// 부모클래스를 상속할 수 없는 오류 발생.
}
class 부모클래스2 {
final void method() {
System.out.println("이 메서드는 오버라이딩할 수 없습니다.");
}
}
class 자식클래스2 extends 부모클래스2 { // 클래스는 상속 되지만 메소드가 상속이 안됨.
void method() { // 오버라이딩을 할 수 없는 오류가 발생.
System.out.println("오버라이딩 시도");
}
}
이렇게 상속에 대해 개념과 예제 코드를 알아보고 상속에서 자주 사용되는 키워드는 개념들도 함께 알아보았습니다.
상속에 대한 개념 오류가 코드 오류가 있다면 댓글로 알려주세요.
'언어 공부하기 > JAVA 개념' 카테고리의 다른 글
[Java 자바] 인터페이스(Interface)에 빠르고 쉽게 알아보기 : 기본 개념부터 코드까지 (자바 인터페이스) (0) | 2024.08.26 |
---|---|
[Java 자바] 추상 클래스(abstract class)에 빠르고 쉽게 알아보기 : 기본 개념부터 코드까지 (자바 추상 클래스) (0) | 2024.08.12 |
[Java 자바] 배열(Arrays)에 대한 모든 것 : 기본 개념부터 코드까지 (자바 Arrays) (0) | 2024.07.30 |
[Java 자바] this 키워드 사용하는 이유? this에 대해 알아보자 (자바 this) (0) | 2024.07.29 |
[Java 자바] 생성자 키워드 사용하는 이유란? 생성자에 대해 알아보자 (자바 생성자) (0) | 2024.07.23 |