min's devlog

추상 클래스(abstract class) 본문

til/Java

추상 클래스(abstract class)

값진 2022. 4. 24. 22:48

추상 메소드(abstract method)

  - 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드

  -  추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기위해 사용한다.

  -  자신에게 필요한 부분만을 재정의하여 사용하면 코드 중복이 줄어 생산성이 향상되고, 배포 등이 쉬워진다.

  - 추상 메소드에서 구현부가 작성되어있지 않기 때문에 구현부는 자식 클래스에서 오버라이딩해 사용한다.

 

추상 클래스(abstract class)

  - 하나 이상의 추상 메소드를 포함하는 클래스

abstract class Car {
	public String name; //일반 멤버 변수
   	public void move() { …} // 일반 메소드
   	abstract void stop(); //추상 메소드
    ..
    }

  - 추상 클래스는 일반 클래스와 같이 생성자, 필드, 메소드를 포함할 수 있다.

  - Car 클래스는 직접 객체를 생성하지 못하고 이를 상속받는 자식 클래스에서는 추상 메소드의 형태를 가질 수 있다.

  - 추상 클래스에서 자식 클래스의 인스턴스를 생성하려면? 상속을 통해 자식 클래스를 만들어 오버라이딩해야한다.

abstract class Animal { abstract void howl(); }

class Cat extends Animal { void howl() { System.out.println("야옹"); } }
class Dog extends Animal { void howl() { System.out.println("멍멍"); } }

public class Polymorphism {
    public static void main(String[] args) {

        // Animal a = new Animal(); // 추상 클래스는 인스턴스를 생성할 수 없음

        Cat c = new Cat();
        Dog d = new Dog();

        c.howl();
        d.howl();
    }
}

결과

야옹

멍멍

 

  -  Animal 클래스(추상 클래스)는 추상 메소드인 cry() 메소드를 가진다.

  - Animal 클래스를 상속받는 자식 클래스인 Dog 클래스와 Cat 클래스는 cry() 메소드를 오버라이딩해야만 비로소

    인스턴스를 생성할 수 있다.

'til > Java' 카테고리의 다른 글

다차원 배열  (0) 2022.04.26
인터페이스(interface)  (0) 2022.04.26
메소드 오버라이딩(method overriding)  (0) 2022.04.23
상속(inheritance)  (0) 2022.04.22
Package와 import  (0) 2022.04.14
Comments