Language/JAVA

[JAVA 기초 이론] 인터페이스 / 추상 클래스 / 상속 비교 정리

오류나면꽥꽥 2024. 2. 21. 16:57

1️⃣ 인터페이스 (Interface) 

 

인터페이스는 클래스에 대한 약속을 정의합니다.

클래스가 해당 인터페이스를 구현하면 인터페이스에 정의된 모든 메서드를 반드시 구현해야 합니다.

 

// 인터페이스 정의
interface Animal {
    void sound(); // 추상 메서드
}

// 인터페이스 구현
class Dog implements Animal {
    public void sound() {
        System.out.println("Woof"); // 추상 메서드 구현
    }
}

 

 

 

 

 

2️⃣ 추상 클래스 (Abstract Class)

 

추상 클래스는 일부 메서드가 구현되어 있고, 일부는 추상 메서드로 선언되어 있습니다.

추상 메서드는 하위 클래스에서 반드시 구현되어야 합니다.

 

// 추상 클래스 정의
abstract class Shape {
    abstract void draw(); // 추상 메서드

    void display() {
        System.out.println("Displaying shape..."); // 구현된 메서드
    }
}

// 추상 클래스를 확장한 구현 클래스
class Rectangle extends Shape {
    void draw() {
        System.out.println("Drawing rectangle"); // 추상 메서드 구현
    }
}

 

 

 

 

 

3️⃣ 상속

 

상속은 클래스 간의 상속 관계를 나타냅니다. 하위 클래스는 상위 클래스의 속성과 메서드를 상속받습니다.

 

// 상위 클래스 정의
class Animal {
    void sound() {
        System.out.println("Animal makes a sound"); // 구현된 메서드
    }
}

// 상위 클래스를 확장한 하위 클래스
class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks"); // 상위 클래스의 메서드 재정의
    }
}

 

@Override 예시)

// 부모 클래스 정의
class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

// 자식 클래스 정의
class Dog extends Animal {
    // 부모 클래스의 sound() 메서드를 오버라이딩
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

// 사용 예시
public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog(); // 다형성을 이용하여 Dog 클래스의 객체 생성
        animal.sound(); // Dog 클래스의 sound() 메서드 호출
    }
}

 

 

 

 

 

 

👀 한 눈에 알아보기

  인터페이스 추상 클래스 상속
부모 클래스 interface A abstract class A class A
자식 클래스 class B implements A class B extends A class B extends A
인스턴스화 직접적으로 인스턴스화될 수 없음 직접적으로 인스턴스화될 수 없음 가능
메서드 모든 메서드는 추상 메서드 일부가 추상 메서드
일부는 구현된 메서드
부모 클래스의 메서드
하위 클래스에서 사용 및 재정의
목적 클래스 간의 관계를 강제함 추상적인 클래스를 제공함 코드 재사용 및 확장을
위해 상속함
상속 다중 상속 단일 상속 단일 상속
예시 GUI 이벤트 리스너,
Comparable 인터페이스
도형(Shape), 동물(Animal)
추상 클래스
동물(Animal) 클래스를
확장한 개(Dog) 클래스

 

인스턴스화?

클래스를 기반으로하여 실제로 메모리에 객체를 생성하는 과정

ex) 자동차의 속성만 가지고 도로에서 움직이는 자동차가 될 수 없으므로 자동차를 실제 객체화해서 만드는 것을 의미

 

 

추상 메서드?

메서드 시그니처만 정의하고 구현 내용을 포함하지 않는 메서드

 

추상클래스 특징

  1. 구현이 없음
  2. 하위 클래스에서 구현

'Language > JAVA' 카테고리의 다른 글

빌드 과정  (1) 2025.01.15
[JAVA 함수] split(), join() 문자 바꾸기  (0) 2024.06.17
[JAVA 기초 이론] 인터페이스 interface  (0) 2024.02.20
객체지향 프로그램(OOP)의 특성  (0) 2023.05.26
[JAVA 기초 이론] MVC패턴  (0) 2023.05.24