본문 바로가기
코틀린 문법

8. 클래스, 생성자, 보조생성자

by 농농씨 2023. 4. 30.

코드테스트 사이트:play.kotlinlang.org

참조:유튜브 디모의 코틀린

 

 

클래스의 기본구조

fun main() {

//클래스:'값'과 그 값을 사용하는 '기능'들을 묶어놓은 것.

//속성(고유의 특징값)과, 함수(기능의 구현)으로 이루어져 있음

var a = Person("박보영",1990)

//변수선언,할당연산자 적은 후 클래스 이름 적은 뒤

//클래스 선언시 적은 순서대로 괄호안에 객체 속성 기입

var b = Person("전정국",1997)

var c = Person("장원영",2004)

//이 인스턴스를 담은 변수를 어떻게 사용??

//변수명.(참조연산자 점)속성명(참조하려는 속성의 이름)

 

println("안녕하세요, ${a.birthYear}년생 ${a.name}입니다.")

//자주사용하는 공통적 기능은 클래스 내에 함수로 넣어주기!

//

a.introduce()

b.introduce()

c.introduce()

}

//사람의 이름과 출생년도 클래스 만들어보자!

class Person (var name:String, val birthYear:Int){ //속성을 쉼표로 구분

//함수 없이 속성만 가진 클래스는 이것만으로 완성!

//클래스는 '인스턴스(instance)'를 만드는 틀이란 것을 기억!

//인스턴스:클래스를 이용해서 만들어내는 서로다른 속성의 객체를 지칭하는 용어

fun introduce(){

println("안녕하세요, ${birthYear}년생 ${name}입니다.")

//클래스 내부에서는 속성 이름만 사용함!!

}

 

}

클래스의 생성자

;인스턴스를 만드는 생성자의 이해

fun main() {

//생성자의 이해

 

var a = Person("박보영",1990)

var b = Person("전정국",1997)

var c = Person("장원영",2004)

//클래스에서 init함수때문에 인스턴스 만들어지기만 해도 생성됐다는

//메시지 출력됨

}

class Person(var name:String, val birthYear:Int){

//클래스의 속성을 선언함과 동시에 '생성자'역시 선언하는 방법!

//생성자:새로운 인스턴스를 만들기 위해 호출하는 특수한 함수

// :인스턴스의 속성을 초기화,인스턴스 생성시 구문 수행

//init 함수:패러미터나 반환형이 없는 특수한 함수

// :생성자 통해 인스턴스 만들어질때 호출됨

init{

println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")

//this:인스턴스 자신의 속성이나 함수를 호출하기 위해

//클래스 내부에서 사용되는 키워드!

}

 

}

보조생성자!!!

fun main() {

//만약 100명 인스턴스 만들어야하는데 90명이 97년생이라면?

//기본값이 97년생이면 좋겠죠?

//기본생성자:클래스를 만들 때 기본으로 선언

//보조생성자:필요에 따라 추가적으로 선언

// :기본생성자와 다른 형태의 생성자를 제공하여 인스턴스 생성시

// 편의를 제공하거나 추가적인 구문을 수행하는 기능을 제공.

var a = Person("박보영",1990)

var b = Person("전정국",1997)

var c = Person("장원영",2004)

 

var d = Person("이루다")

var e = Person("차은우")

var f = Person("류수정")

 

}

class Person(var name:String, val birthYear:Int){

init{

println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")

}

constructor(name:String) : this(name, 1997){//이름은 받은 그대로 넘기고

//년도는 1997로 초기화한다.

println("보조생성자가 사용되었습니다.")

}

//이름만 받는 생성자

//보조생성자는 constructor라는 키워드 사용함.

//init처럼 함수처럼 만들어주고 괄호안에 필요한 패러미터 넣어주기!

//!!주의!! 보조생성자 만들땐 기본생성자 통해 속성 초기화해줘야함

//기본생성자가 보조생성자 호출하도록 하려면 this붙이고 괄호에

//기본 생성자가 필요로 하는 파라미터 넣어주기

}

참고:유튜브 디모의 Kotlin 강좌