6) 상속과 다형성

SOCICAL·2024년 7월 3일

android

목록 보기
8/20
post-thumbnail

# 상속 (Inheritance)

  • 객체지향 프로그래밍의 중요한 특징 중 하나이다.
  • 기존 클래스의 속성과 메서드를 새 클래스에 물려주는 것을 말한다.
  • 상속을 통해 코드의 재사용성을 높이고, 클래스 간의 계층 구조를 정의할 수 있다.

- 상속의 기본 문법

  • Java에서 클래스는 extends 키워드를 사용하여 다른 클래스를 상속받는다.
// 부모 클래스
class Animal {
    void eat() {
        System.out.println("This animal eats food.");
    }
}

// 자식 클래스
class Dog extends Animal {
    void bark() {
        System.out.println("The dog barks.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat(); // 부모 클래스의 메서드
        dog.bark(); // 자식 클래스의 메서드
    }
}

- Java 8 이후: super 키워드

  • Java 8 이후부터는 부모 클래스의 생성자나 메서드를 호출할 때 super 키워드를 사용할 수 있다.
class Animal {
    String name;

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

    void eat() {
        System.out.println(name + " eats food.");
    }
}

class Dog extends Animal {
    Dog(String name) {
        super(name); // 부모 클래스의 생성자 호출
    }

    void bark() {
        System.out.println(name + " barks.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy");
        dog.eat();
        dog.bark();
    }
}

# 다형성 (Polymorphism)

  • 같은 타입의 객체가 여러 형태를 가질 수 있는 것을 의미한다.
  • 주로 부모 클래스의 참조 변수가 자식 클래스의 객체를 참조할 수 있게 함으로써 구현한다.

- 다형성의 기본 예제

class Animal {
    void sound() {
        System.out.println("This animal makes a sound.");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("The dog barks.");
    }
}

class Cat extends Animal {
    void sound() {
        System.out.println("The cat meows.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        myDog.sound(); // "The dog barks."
        myCat.sound(); // "The cat meows."
    }
}

- Java 8 이후: 인터페이스와 다형성

  • Java 8부터는 인터페이스에 디폴트 메서드를 정의할 수 있게 되었다.
  • 다형성을 더 유연하게 사용할 수 있다.
interface Animal {
    void sound();

    default void sleep() {
        System.out.println("This animal sleeps.");
    }
}

class Dog implements Animal {
    public void sound() {
        System.out.println("The dog barks.");
    }
}

class Cat implements Animal {
    public void sound() {
        System.out.println("The cat meows.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        Animal myCat = new Cat();
       
        myDog.sound();
        myCat.sound();
      
        myDog.sleep();
        myCat.sleep();
    }
}

0개의 댓글