[Kotlin] 클래스 사용법

2022. 12. 8. 12:00·컴퓨터 언어/Kotlin
728x90

코틀린도 다른 객체 지향 언어와 마찬가지로 클래스를 사용할 수 있다.

 

class Student(name:String, age:Int){
    val sName:String = name
    val sAge:Int = age
    
    fun printName():String{
        return sName
    }
    fun printAge():Int{
        return sAge
    }
}

클래스의 멤버 변수를 프로퍼티(property)라고 하고 멤버 함수를 메소드(method)라고 한다.

 

클래스를 정의할 때 생성자의 경우 주 생성자와 부 생성자로 나뉜다.

 

위의  Student 클래스는 주 생성자이고 부 생성자는 클래스 내부에서 constructor를 사용하여  만들 수 있다.

 

코틀린 클래스에는 몇 가지 규칙이 존재한다.

 

프로퍼티는 반드시 초기화를 해야한다.

 

프로퍼티를 만드려면 다음 두 가지 중 하나를 반드시 해야한다.

 

  1. 선언과 동시에 초기화를 한다.
  2. 선언을 해두고 init 블록 안에서 초기화를 한다.

1번의 경우 위 Student 클래스 예시를 보면 되고

 

2번의 경우 아래와 같이 하면 된다.

class Student(name:String, age:Int){
    val sName:String
    val sAge:Int
    init{
        sName=name
        sAge=age
    }

    fun printName():String{
        return sName
    }
    fun printAge():Int{
        return sAge
    }
}

두 방법을 사용하지 않고 메소드에서 초기화를 한다는 것은 불가능하다.

 

주 생성자의 파라미터는 프로퍼티를 초기화 할 때만 사용할 수 있다.

 

위에서 프로퍼티를 초기화하는 방법 두 가지를 소개했는데 이렇게 프로퍼티를 초기화할 때만 사용할 수  있다.

 

아니면 따로 프로퍼티를 생성하지 않고 파라미터 자체를 프로퍼티로 사용하는 방법도 있다.

 

파라미터 앞에 val을 붙이면 된다.

class Student(val name:String, val age:Int){
    fun printName():String{
        return name
    }
    fun printAge():Int{
        return age
    }
}

 

프로퍼티 혹은 메소드에 가시성을 줄 수도 있다.

 

  1. public : 어디에서든 멤버에 접근 가능
  2. internal : 모듈 내부에서만 접근 가능
  3. protected : 해당 클래스와 하위 클래스에서만 접근 가능
  4. private : 해당 클래스 내부에서만 접근 가능
내부 클래스

클래스 내부에 inner class를 사용하여 클래스를 선언하면 내부 클래스가 된다.

 

내부 인스턴스의 경우 외부 인스턴스에 접근할 수 있다.

728x90

'컴퓨터 언어 > Kotlin' 카테고리의 다른 글

[Kotlin] 영역 함수 (run, let, with, apply, also)  (0) 2022.12.21
[Kotlin] 고차 함수와 람다 함수  (0) 2022.12.20
[Kotlin] try-catch문을 활용한 예외 처리 (finally)  (0) 2022.12.07
[Kotlin] 내포된 반복문과 레이블  (0) 2022.12.06
[Kotlin] null 가능성 체크 (엘비스 연산자, !!, ?)  (0) 2022.11.29
'컴퓨터 언어/Kotlin' 카테고리의 다른 글
  • [Kotlin] 영역 함수 (run, let, with, apply, also)
  • [Kotlin] 고차 함수와 람다 함수
  • [Kotlin] try-catch문을 활용한 예외 처리 (finally)
  • [Kotlin] 내포된 반복문과 레이블
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ci/cd
    푸쉬 알람
    스택
    스프링 OAuth2
    RNN
    ChatPromptTemplate
    code tree
    codetree
    binary search
    AWS Lambda
    다익스트라
    bfs
    Vector Store
    파이썬
    Merge
    influxDB CLI
    openvidu 배포
    embedding
    nn.RNN
    parametric search
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Kotlin] 클래스 사용법
상단으로

티스토리툴바