2022. 3. 8. 11:50ㆍ[Android APP] feat. Kotlin/Kotlin 언어 기초
추상클래스(Abstract Class)
추상클래스란 아직 구현되지 않고 선언만 된 추상메서드를 가지고 있는 클래스이다.
추상클래스는 메서드가 구현되지 않았기 때문에 이 클래스를 직접 객체로 만들 수는 없고 무조건 상속을 받는 자식클래스 (SubClass) 가 있어야 한다. 추상클래스는 상속을 통해 생성될 자식클래스에서 메서드 오버라이딩에 강제성을 부여하기 위해 사용된다.
abstract class 클래스명()
============================================================================
아래 예제를 보자.
Mammal이라는 추상 클래스를 만들었다.
추상 클래스에 들어가는 프로퍼티와 메소드는 반드시 자식 클래스에서 상속을 받아야한다.
참고로 추상 클래스에 있는 추상 메소드에는 함수 Body가 없이 Head만 짤 수 있다.
다음은 Mammal 클래스를 받은 자식 Human 클래스에 생성자를 보면
override var maxSpeed: Double
을 통해 추상 클래스의 프로퍼티를 가져온 것을 알 수 있다.
이렇게 run(), breath() 추상 메소드도 override를 통해 불러온다.
또 다른 예시, Elephant도 같은 방식으로 만든다.
이제 메인 함수에서 실행시켜보자.
각각 맞는 파라미터 값을 넣어준 후 human과 elephant 클래스에 있는 함수를 불러오니 정상적으로 작동한다.
============================================================================
자 여기서 만약 상속받은 클래스가 아닌 추상 클래스 Mammal의 객체를 생성한다면 어떻게 될까?
Cannot create an instance of an abstract class
추상 클래스의 인스턴스를 만들 수 없습니다. 라고 에러 코드가 뜨게 된다.
즉, 추상 클래스는 자체에 대한 인스턴스는 만들 수 없지만 추상 클래스를 상속받은 클래스에서는 만들 수 있다.
============================================================================
인터페이스와의 차이점
1. 인터페이스는 여러개를 구현할 수 있지만 추상 클래스는 하나만 구현할 수 있다.
2. 인터페이스는 생성자가 존재하지 않지만, 추상 클래스는 클래스이기 때문에 생성자가 존재한다.
3. 인터페이스는 필드를 저장하지 못한다. 추상 클래스는 인터페이스가 추가할 수 있는 건 모두 할 수 있고, 필드와 생성자도 추가할 수 있다.
'[Android APP] feat. Kotlin > Kotlin 언어 기초' 카테고리의 다른 글
21. 컬렉션의 개요 (0) | 2022.03.09 |
---|---|
20. 형 변환 (0) | 2022.03.08 |
18. 인터페이스 (0) | 2022.03.07 |
17. 상속과 오버라이딩 (0) | 2022.03.07 |
16. lateinit과 게터, 세터(getter, setter) (0) | 2022.03.07 |