📢 OOP(객체 지향 프로그래밍)
프로그램을 객체(Object)로 나누고 이들의 상호작용으로 서술하는 방식. 객체는 하나의 역할을 수행하는 메소드(Method)와 변수(Value)의 묶음.
class Person() { }
/* 위 아래 같은 선언 방법 */
public class Person() { }
➡ Kotlin Class의 기본 가시성은 public이다. 이는 자바와 동일하다. Class를 만드는 형식은 클래스 키워드, 클래스 명, 클래스 헤더(기본 생성자, 유형 매개변수), 클래스 본체로 만들어진다.
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는 보조 생성자로도 사용이 가능하다. 보조 생성자란 기본 생성자와 다른 형태의 생성자를 제공하여 인스턴스 생성시 편의를 제공하거나 추가적인 구문을 수행하는 기능을 제공하는 역할을 한다.
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 함수는 패러미터나 반환형이 없는 특수한 함수. 생성자를 통해 인스턴스가 만들어질때 호출되는 함수이다.
/* 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 */
class SampleKt(var name:String, var nickName:String?) {
}
코틀린 클래스의 기본 제어자(Default modifier)는 public final 이다.
→ 기본적으로 클래스 상속이 닫혀 있다.
자바에서는 getter(), setter()를 직접 구현해주어서 사용한다.
→ 코틀린에서는 생성자를 넣음으로써 getter(), setter() 구현체가 완성 되어있다.
✅ 코틀린의 다른것이 궁금할땐 아래 링크 확인
@evergreen_tree