[Kotlin] 클래스

오리너구리·2024년 5월 22일
0

개발 공부 정리

목록 보기
4/9
post-thumbnail

Class(클래스) 란?

변수와 함수의 모음

그룹화 할 수 있는 함수와 변수를 모아놓고 사용하기 쉽게 이름을 붙여놓은 것

클래스의 기본 구조

class 클래스명 {
    var 변수
    fun 함수() {
        // 코드
    }
}

클래스의 사용

클래스 이름에 괄호를 붙여서 클래스의 생성자를 호출한다.

클래스명()

이렇게 파라미터없이 클래스명에 괄호를 붙여주면 생성자가 호출되면서 init블록 안의 코드가 자동으로 실행된다

Property(프로퍼티)와 Method(메서드)

클래스 내부에 정의되는 변수와 함수를 멤버 변수, 멤버 함수라고 부르고 또 다른 용어로는 프로퍼티와 메서드라고 부른다.

클래스의 변수 = 멤버 변수 = 프로퍼티

클래스의 함수 = 멤버 함수 = 메서드

*클래스 안에 정의된 변수는 프로퍼티, 함수 안에 정의된 변수는 (지역)변수

오브젝트(Object)

Object를 사용하면 클래스 생성자로 인스턴스화 하지 않아도 블록 안의 프로퍼티와 메서드를 호출해서 사용할 수 있다

주의할 점 :

클래스 명을 그대로 사용하기 때문에 호출하는 클래스명의 첫 글자가 대문자이다

앱 전체에 1개만 생성된다

companion object

일반 클래스에 object 기능을 추가하기 위해서 사용

데이터 클래스

간단한 값의 저장 용도로 제공하는 클래스

클래스와 사용범이 동일하지만 주로 네트워크를 통해 데이터를 주고받거나, 로컬 앱의 데이터베이스에서 데이터를 다루기 위한 용도로 사용함

data class 클래스명(val 파라미터1: 타입, var 파라미터2: 타입)

데이터 클래스를 정의할 때 class 앞에 data 키워드를 사용해야한다

생성자 파라미터 앞에 입력하는 var(또는 val) 키워드는 생략할 수 없다

클래스와 상속과 확장

클래스는 상속을 통해 재사용할 수 있다

상속을 사용하면 부모 클래스의 메서드와 프로퍼티를 내 클래스의 일부처럼 사용할 수 있다

상속을 활용하면 코드를 체계적으로 관리 할 수 있기 때문에 규모가 큰 프로젝트를 효과적으로 설계할 수 있다

클래스 상속 방법

부모 클래스는 open 키워드로 만들어야만 자식 클래스에서 사용할 수 있다

자식 클래스에서는 콜론을 이용해서 상속할 부모 클래스를 지정한다

부모 클래스명 다음에 괄호를 입력해서 부모의 생성자를 호출해야한다

open class 상속될 부모 클래스 {
    // 코드
}

class 자식 클래스: 부모 클래스() {
    // 코드
}

**부모 클래스의 생성자에 파라미터가 있는 경우**

open class 부모 클래스(value: String) {
    // 코드
}

class 자식 클래스(value: String): 부모 클래스(value) {
    // 코드
}

**부모 클래스에 세컨더리 생성자가 있는 경우**
(안드로이드의 View 클래스를 상속받는 예제)

class CustomView: View {    // 부모 클래스명 다음 괄호를 생략했습니다.
    constuctor(ctx: Context): super(ctx)
    constructor(ctx: Context, attrs: AttributeSet): super(ctx, attrs)
}

Overide

상속받은 부모클래스의 프로퍼티와 메서드를 자식클래스에서 다른 용도로 사용해야 하는 경우, 동일한 이름의 메서드나 프로퍼티를 사용할 필요가 있을 경우에 override 키워드를 사용해서 재정의 할 수있다

overide 할 경우에는 프로퍼티나 메서드 앞에 open을 붙여야한다

Extension

미리 만들어져있는 클래스에 메서드를 넣는 것

누군가 작성해둔 클래스에 메서드를 추가하기 위한 용도

익스텐션을 사용한다고 해서 실제 클래스의 코드가 변경되지는 않는다

실행 시에 도트 연산자로 호출해서 사용할 수 있도록 해준다

profile
오리너구리입니다

0개의 댓글