Kotlin의 클래스 및 상속 - 2

2022. 4. 18. 11:15IT/안드로이드

반응형

1편에 이어서 2편 작성하겠다. 

이번엔 추상 클래스에서 추상 함수를 선언한 다음 서브클래스에서 그 기능을 구현하는 방법을 알아보도록 한다.

1.

main()함수에 추가하고싶은 abstract funtion을 추가한다. 

ex ) abstract fun floorArea(): Double

** 참고; 추상 클래스에서 정의된 모든 추상 메서드추상 클래스의 서브클래스에서 구현되어야 한다.  코드를 실행하려면 먼저 서브클래스에서 floorArea()를 구현해야 한다.

2.

SquareCabin 이라는 SubClass에서 floorArea를 구현할 것인데,

이 함수도 동일하게 상위 클래스의 abstract 함수를 구현하므로,

다른 변수들(buildingMaterial..capa )과 같이 , 함수에도 override fun 을 써줘야한다. 

override fun floorArea(): Double {
	return length * length
}

여기서 가로* 세로를 곱한 면적 값을 return 해주기로 합니다. 

여기서 length 는 floorArea에 있는 변수가 아니다. 고로 SquareCabin 에 length를 추가해준다.

이와 같이 RoundHut, RoundTower에도 동이랗게 override fun floorArea를 추가해준다. 

RoundHut에서 아래와 같은 함수를 쓰는데, 

override fun floorArea(): Double {
        return radius * radius
}

이걸 RoundTower에서 동일하게 쓸 필요가 없다. 

super.floorArea() 로 radius*radius 값을 받아올 수 있다. 

class RoundTower(residents: Int, 
                 radius: Double,
                 val floors: Int = 2) : RoundHut(residents, radius) {
    override val buildingMaterial = "Stone"
    override val capacity = 4 * floors
    /*
    override fun floorArea(): Double {
        return radius * radius * floors
    }
    */
    override fun floorArea(): Double{
        return super.floorArea() * floors
    }
}

그러면 radius * radius * floors 값을 return 하게 된다. !

 

 

 

728x90
반응형

'IT > 안드로이드' 카테고리의 다른 글

Android - Material Design page  (2) 2022.04.19
Kotlin의 클래스 및 상속 - 3  (1) 2022.04.18
Kotlin 의 Class 및 상속  (2) 2022.04.18
Android - Kotlin Logging & Debugging  (3) 2022.04.15
Android - Navigating  (6) 2022.04.14