Giken Dev
article thumbnail
반응형

내가 객체지향 프로그래밍에서, 가장 헷갈려했던 부분을 학습했다. 뽀수자

 

abstract class Animal {
    // 추상 메서드: 하위 클래스에서 반드시 구현해야 함
    abstract void makeSound();
    
    // 일반 메서드: 하위 클래스에서 재정의할 수도, 그대로 사용할 수도 있음
    void eat() {
        System.out.println("동물이 먹이를 먹습니다.");
    }
}

interface Swimmer {
    // 추상 메서드: 구현 클래스에서 반드시 구현해야 함
    void swim();
}

// 구현 클래스
class Dog extends Animal implements Swimmer {

    @Override
    void makeSound() {
        System.out.println("개가 짖습니다.");
    }

    @Override
    public void swim() {
        System.out.println("개가 수영합니다.");
    }
}

public class Main {
    public static void main(String[] args) {
    
        Dog dog = new Dog();
        
        dog.makeSound(); // "개가 짖습니다."
        dog.eat(); // "동물이 먹이를 먹습니다."
        dog.swim(); // "개가 수영합니다."
    }
}

 

  • 추상클래스 (abstract)
    • abstract 클래스는 인스턴스를 생성할 수 없다 !
    • abstract 클래스 안에서 abstract 메서드를 포함하면 좋음
  • 인터페이스 (interface)
    • 다형성을 제공
    • 클래스는 하나만 상속받을 수 있지만,
    • interface 는 여러 개 상속받을 수 있음
  • 추상클래스 vs 인터페이스
    • 추상 클래스를 꼭 사용해야하는 경우가 아니라면
      • 인스턴스 변수가 필요한 경우
      • 생성자가 필요한 경우
      • Object 클래스의 메서드를 오버라이딩 하고 싶은 경우
    • 추상클래스보다 인터페이스를 쓰는 것이 권장된다.
      • 인터페이스가 더 추상적이기 때문 !

 

 

 

https://velog.io/@gillog/Java-Interface-vs-Abstract-Class-%EC%A0%95%EB%A6%AC

 

[Java] Interface vs Abstract Class 정리

🙆‍♂️ 참고사이트 🙇‍♂️ 자바의 추상 클래스와 인터페이스 - 추상 클래스와 인터페이스의 차이[by강관우] [JAVA] 추상클래스 VS 인터페이스 왜 사용할까? 차이점, 예제로 확인 [마이자몽 myJ

velog.io

 

나만 abstract 클래스와 인터페이스의 둘이 헷갈려…?

위의 포스팅에서 그림 및 예제와 함께, 이해하려고 노력중이다.

반응형
profile

Giken Dev

@기켄

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!