min's devlog
추상 클래스(abstract class) 본문
추상 메소드(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