본문 바로가기
언어 공부하기/JAVA 개념

[Java 자바] 상속(Inheritance)에 빠르고 쉽게 알아보기 : 기본 개념부터 코드까지 (자바 상속)

by 망댕이 2024. 8. 6.
반응형

자바에서 상속은 핵심 개념 중 하나이다.

상속을 이용하여 기존 클래스의 특성과 기능을 새로운 클래스에서 물려받을 수 있으며, 이를 이용하여 코드의 재사용성과 학장성을 높일 수 있다는 장점을 가지고 있다.

 

▷ 상속(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("오버라이딩 시도");
    }
}

 

 

이렇게 상속에 대해 개념과 예제 코드를 알아보고 상속에서 자주 사용되는 키워드는 개념들도 함께 알아보았습니다.

상속에 대한 개념 오류가 코드 오류가 있다면 댓글로 알려주세요.

반응형