hyeon.s
개발로그
hyeon.s
전체 방문자
오늘
어제
  • 분류 전체보기 (150)
    • Web 및 인프라 (1)
      • Web (1)
      • Terraform (2)
      • Docker (1)
    • Android (1)
      • 공부 (28)
      • 트러블슈팅 (12)
      • 프로젝트 개발 (10)
      • Compose (2)
      • 우테코 프리코스 (0)
    • Server (5)
      • 공부 (1)
      • Spring (4)
    • 알고리즘 (68)
      • 문제풀이 (C++,Kotlin) (54)
      • 공부 (13)
    • 디자인 (3)
      • UI (3)
    • Language (5)
      • Kotlin (5)
      • JAVA (0)
    • IT 동아리 (8)
      • UMC 3기 (Android) (7)
      • Sopt 32기 (Android) (1)

Github

글쓰기 / 관리자
hELLO · Designed By 정상우.
hyeon.s

개발로그

[Kotlin] 클래스와 상속
Language/Kotlin

[Kotlin] 클래스와 상속

2023. 1. 6. 00:47
728x90

클래스와 상속

클래스란?

간단히 말하면 어떤 변수와 그 변수를 사용하는 기능(메서드)들을 묶어둔 것이다.

클래스 기본구조

fun main() {
   Person("서현",22).introduce()
}

class Person(var name:String, var age:Int)
{
    fun introduce()
    {
        println("안녕하세요 ${this.name}입니다 나이는 ${this.age} 입니다.")
    }
}

다음과 같이 Person 클래스를 생성하고, introduce라는 메서드를 만들어서 사용할 수 있다. 

클래스 생성자

생성자란?

새로운 인스턴스를 만들기위해 호출하는 함수로 초기화 기능과 인스턴스 생성시 수행할 구문을 작성 할 수 있다.

아래와 같이 init 함수 안에 생성시 초기화 할 구문을 넣어 구현할 수 있다. 

fun main() {
   Person("서현",22).introduce()
}

class Person(var name:String, var age:Int)
{
    init {
        println("${this.name}님이 생성")
    } // 이 부분이 생성자 함수이다.
    fun introduce()
    {
        println("안녕하세요 ${this.name}입니다 나이는 ${this.age} 입니다.")
    }
}

init 과 같이 초기화 하는 것을 기본생성자라고 하고,필요에 따라 constructor을 통해 보조생성자를 생성 할 수 있다. 

클래스와 상속

상속을 하는 이유

1. 이미 있는 class에서 기능을 확장해서 사용하기 위해서이다.

2. 여러개 class들의 공통 기능을 묶어 관리하기 위해서이다.

상속에서의 약속

1. 서브 class는 슈퍼class와 동일한 이름을 가질 수 없다.

2. 슈퍼 clsdd앞에 open을 해주어야 상속이 가능하다.  *코틀린은 상속 금지가 기본값이다. 

3. 서브 class는 슈퍼 class의 생성자를 호출한다. 

fun main() {
  Animal("코코",5,"개").introduce()
  Dog("코코",5).introduce()
  Dog("코코",5).bark()
}

open class Animal (var name:String, var age:Int, var type:String)
{
    fun introduce() {
        println("저는 ${type}이고, ${age}살 입니다. ")
    }
}

class Dog(name:String, age:Int):Animal(name,age,"개")
{
 fun bark() {
     println("멍멍")
 }
}

위 코드와 같이 Animal 클래스를 상속받은 Dog 클래스를 생성 할 수 있다.

Dog 클래스는 Animal 클래스를 상속받아 introduce() 를 사용할 수 있고, bark() 라는 나만의 메서드를 만들어 사용할 수도 있다. 

 

728x90
저작자표시 (새창열림)

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

[Kotlin] isNullOrBlank vs isNullOrEmpty 헷갈리지말자  (0) 2023.08.30
[Kotlin] 코틀린의 sealed class 란?  (0) 2023.08.15
[Kotlin 문법] 스코프함수  (0) 2023.01.06
[Kotlin 문법] 오버라이딩과 추상화  (0) 2023.01.06
'Language/Kotlin' 카테고리의 다른 글
  • [Kotlin] isNullOrBlank vs isNullOrEmpty 헷갈리지말자
  • [Kotlin] 코틀린의 sealed class 란?
  • [Kotlin 문법] 스코프함수
  • [Kotlin 문법] 오버라이딩과 추상화
hyeon.s
hyeon.s
이유있는 코드를 짜자

티스토리툴바