코틀린 Class

Ham's Velog·2022년 6월 12일
1
post-thumbnail

OOP(Object Oriented Programming)

📢 OOP(객체 지향 프로그래밍)

프로그램을 객체(Object)로 나누고 이들의 상호작용으로 서술하는 방식. 객체는 하나의 역할을 수행하는 메소드(Method)와 변수(Value)의 묶음.


kotlin Class

Class 선언

class Person() { } 
/* 위 아래 같은 선언 방법 */
public class Person() { }

➡ Kotlin Class의 기본 가시성은 public이다. 이는 자바와 동일하다. Class를 만드는 형식은 클래스 키워드, 클래스 명, 클래스 헤더(기본 생성자, 유형 매개변수), 클래스 본체로 만들어진다.

Class Constructor

class Person constructor (name: String, age: Int) { // constructor 생략하고 사용 가능
	var name:String = name // 프로퍼티 초기화
	var age: Int = age // 프로퍼티 초기화

	...
}

➡ constructor 키워드를 통해 name / age 의 프로퍼티를 초기화 하는 생성자를 구현할 수 있다. constructor 키워드는 생략이 가능하다.

fun main() {
	var a = Person("최상록")
	var b = Person("차은우")
	var c = Person("함하형")

	var d = Person("name", 28)
}

class Person (val name: String, val age: Int) {
	constructor (name:String) : this(name, 1997) { 
	// 이경우 'age'는 1997로 고정이 된다.
	
		println("보조 생성자가 사용됨.")
	}
	...
}

➡ constructor는 보조 생성자로도 사용이 가능하다. 보조 생성자란 기본 생성자와 다른 형태의 생성자를 제공하여 인스턴스 생성시 편의를 제공하거나 추가적인 구문을 수행하는 기능을 제공하는 역할을 한다.

Class init

fun main() {
	var a = Person("최상록", 1997)
	var b = Person("차은우", 1998)
	var c = Person("함하형", 2002)
}

class Person (name: String, age: Int) { 
	init {
		println("${name}의 나이는 ${age}이다.")
	}

	...
}

➡ init 함수는 패러미터나 반환형이 없는 특수한 함수. 생성자를 통해 인스턴스가 만들어질때 호출되는 함수이다.


Kotlin vs Java

🟢 Java Sample Class

/* JAVA Sample Class */

public final class Sample {
    private String name;
    private String nickName;

    public Sample(String name, String nickName) {
        this.name = name;
        this.nickName = nickName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
}

🟢 Kotlin Sample Class

/* Kotlin Sample Class */

class SampleKt(var name:String, var nickName:String?) {

}
  • 코틀린 클래스의 기본 제어자(Default modifier)는 public final 이다.

    → 기본적으로 클래스 상속이 닫혀 있다.

  • 자바에서는 getter(), setter()를 직접 구현해주어서 사용한다.

    → 코틀린에서는 생성자를 넣음으로써 getter(), setter() 구현체가 완성 되어있다.


✅ 코틀린의 다른것이 궁금할땐 아래 링크 확인
@evergreen_tree

profile
#안드로이드개발자

0개의 댓글