본문 바로가기
IT/java

자바 상속과 오버라이딩: 객체지향 프로그래밍의 핵심

by 뉴코딩맨 2023. 6. 7.
자바는 객체지향 프로그래밍 언어로서 상속과 오버라이딩이라는 중요한 개념을 제공합니다. 상속은 클래스들 간의 계층적인 관계를 형성하고, 오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 기능입니다. 자바의 상속과 오버라이딩에 대해 자세히 알아보고, 예제를 통해 설명하겠습니다.

 

 

상속 (Inheritance)

상속은 클래스들 간에 부모-자식 관계를 형성하여 코드의 재사용성과 구조화를 도와줍니다. 자식 클래스는 부모 클래스의 속성과 메서드를 상속받아 사용할 수 있으며, 새로운 속성과 메서드를 추가할 수도 있습니다. 이를 통해 코드의 중복을 피하고 유지보수를 간편하게 할 수 있습니다.
 
다음은 상속의 예시입니다.
 
class Animal {
    protected String name;

    public Animal(String name) {
    	this.name = name;
    }

    public void eat() {
    	System.out.println(name + "이(가) 먹이를 먹습니다.");
    }
}

class Cat extends Animal {
    public Cat(String name) {
    	super(name);
    }

    public void meow() {
    	System.out.println(name + "이(가) 야옹 소리를 내면서 웁니다.");
    }
}
위의 예제에서 Cat 클래스는 Animal 클래스를 상속받았습니다. 이로써 Cat 클래스는 name 속성과 eat() 메서드를 상속받아 사용할 수 있게 되었습니다. 또한 Cat 클래스에는 meow() 메서드가 추가되어 고양이의 특징을 표현할 수 있습니다.
 
 

오버라이딩 (Overriding)

오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 말합니다. 자식 클래스에서 동일한 이름, 매개변수, 반환 타입을 가진 메서드를 정의하면 부모 클래스의 메서드가 가려지고 자식 클래스의 메서드가 호출됩니다. 이를 통해 자식 클래스는 부모 클래스의 동작을 재정의하거나 추가할 수 있습니다.
 
다음은 오버라이딩의 예시입니다.
 
class Animal {
    public void makeSound() {
   		System.out.println("동물이 소리를 낸다.");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
    	System.out.println("야옹~");
    }
}
 
위의 예제에서 Cat 클래스는 makeSound() 메서드를 오버라이딩하여 "야옹~"이라는 소리를 출력하도록 변경했습니다. 이로써 Cat 객체의 makeSound() 메서드를 호출하면 부모 클래스인 Animal의 동작이 아닌 자식 클래스인 Cat의 동작이 실행됩니다.
 
 

마무리

자바의 상속과 오버라이딩에 대해 알아보았습니다. 상속을 통해 클래스들 간의 계층적인 관계를 형성하고 코드의 재사용성과 확장성을 높일 수 있으며, 오버라이딩을 통해 부모 클래스의 메서드를 자식 클래스에 맞게 수정할 수 있습니다.
 
상속과 오버라이딩은 객체지향 프로그래밍에서 핵심적인 개념이므로, 이를 잘 이해하고 활용하는 것이 중요합니다. 다양한 예제와 실습을 통해 상속과 오버라이딩에 대한 이해를 높이고, 유연하고 효율적인 자바 프로그래밍을 할 수 있도록 노력해봅시다.
 

댓글