코드테스트 사이트: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 강좌
'코틀린 문법' 카테고리의 다른 글
10. 클래스의 다형성 (0) | 2023.05.04 |
---|---|
9. 상속, 오버라이딩과 추상화 (0) | 2023.04.30 |
7. 조건문과 비교연산자, 흐름제어와 논리연산자 (0) | 2023.04.30 |
6. 형변환과 배열, 타입추론과 함수 (0) | 2023.04.30 |
5. 변수와 자료형-코틀린 (0) | 2023.04.30 |