반응형
1. 클래스
fun main(){
val article1 = Article()
article1.id = 1
article1.regDate = "2020-12-12 12:12:12"
article1.title = "제목1"
println("id : ${article1.id}, title : ${article1.title}")
val article2 = Article()
article2.id = 2
article2.regDate = "2020-12-12 12:12:12"
article2.title = "제목2"
println("id : ${article2.id}, title : ${article2.title}")
val article3 = Article()
article3.id = 3
article3.regDate = "2021-12-12 12:12:12"
article3.title = "제목3"
println("id : ${article3.id} , title : ${article3.title}")
}
class Article{
// var 변수 , val 불변
var id:Int = 0;
var regDate:String = "";
var title:String = "";
}
fun main(){
val person01 = Person()
person01.name ="철수"
person01.age = 23
person01.gen ="남자"
person01.loc="철원"
println("첫번째 사람은 ${person01.name}/${person01.gen}/${person01.age}살/${person01.loc}")
val person02 = Person()
person02.name ="영희"
person02.age = 22
person02.gen ="여자"
person02.loc="남원"
println("두번째 사람은 ${person02.name}/${person02.gen}/${person02.age}/${person02.loc}")
val person03 = Person()
person03.name ="영수"
person03.age = 25
person03.gen ="남자"
person03.loc="진천"
println("세번째 사람은 ${person03.name}/${person03.gen}/${person03.age}/${person03.loc}")
}
class Person{
var name:String =""
var age:Int = 0
var gen:String = ""
var loc:String = ""
}
2. Data class
fun main(){
val person01 = Person()
person01.id = 1
person01.name ="철수"
person01.age = 23
person01.gen ="남자"
person01.loc="철원"
println("첫번째 사람은 ${person01.name}/${person01.gen}/${person01.age}살/${person01.loc}")
println(person01)
println(person01.introduceMsg())
println()
val person02 = Person()
person02.id = 2
person02.name ="영희"
person02.age = 22
person02.gen ="여자"
person02.loc="남원"
println("두번째 사람은 ${person02.name}/${person02.gen}/${person02.age}살/${person02.loc}")
println(person02)
println(person02.introduceMsg())
println()
val person03 = Person()
person03.id = 3
person03.name ="영수"
person03.age = 25
person03.gen ="남자"
person03.loc="진천"
println("세번째 사람은 ${person03.name}/${person03.gen}/${person03.age}살/${person03.loc}")
println(person03)
println(person03.introduceMsg())
println()
var a:String = "테스트파일"
var b:String = "테스트파일"
// data class
println("--------- 데이터 클래스 -------------")
val person02_01 = Person02(1,"한우",26,"남자","원주");
println(person02_01)
println(person02_01.introduceMsg02())
}
class Person{
var id:Int=0
var name:String =""
var age:Int = 0
var gen:String = ""
var loc:String = ""
fun introduceMsg ():String = "자기소개 : 안녕, 나는 ${name}! ${age}살 ${gen}이고 ${loc} 출신이야!";
override fun toString(): String {
return "정보 ${id} : ${name}/${gen}/${age}살/${loc}";
};
}
// 데이터 클래스
data class Person02(var id:Int, // 주 생성자
var name:String, // 주 생성자
var age:Int, // 주 생성자
var gen:String, // 주 생성자
var loc:String // 주 생성자
){
fun introduceMsg02():String ="데이터 클래스 자기소개 : 안녕하세요, 저는 ${name}! ${age}살 ${gen}이고 ${loc} 출신입니다.";
}
3. 타입 추론
코틀린에서는 타입을 명시하지 않아도, 변수가 선언될 때 할당된 값의 형태로 어떤 자료형을 가지는지 추론해준다.
((반드시 특정 자료형으로 지정해야하는 상황이 아니라면, 타입추론 기능을 이용하여 코드량을 줄일 수 있다.))
코틀린은 변수 선언시 타입을 명시한다면 var name:String = "이름" 이런식으로 표현되지만
var name = "이름" 이런식으로 표기할 경우 타입이 추론되어 생략된 표기로도 사용가능하다.
val value:String = "my string"
val value = "my string" // Type 생략 가능
4. nullable
변수 타입 옆에 ?를 붙이면 null을 할당할 수 있는 프로퍼티이고
?가 붙지 않으면 null이 허용되지 않는 프로퍼티를 의미
var nullable: String? = "nullable"
var nonNullable: String = "non-Nullable"
nullable 프로퍼티는 null을 할당할 수 있지만, nonNullable에 null을 할당하려고 하면 컴파일 에러가 발생
전체 코드
fun main(){
val person01 = Person()
person01.id = 1
person01.name ="철수"
person01.age = 23
person01.gen ="남자"
person01.loc="철원"
println("첫번째 사람은 ${person01.name}/${person01.gen}/${person01.age}살/${person01.loc}")
println(person01)
println(person01.introduceMsg())
println()
val person02 = Person()
person02.id = 2
person02.name ="영희"
person02.age = 22
person02.gen ="여자"
person02.loc="남원"
println("두번째 사람은 ${person02.name}/${person02.gen}/${person02.age}살/${person02.loc}")
println(person02)
println(person02.introduceMsg())
println()
val person03 = Person()
person03.id = 3
person03.name ="영수"
person03.age = 25
person03.gen ="남자"
person03.loc="진천"
println("세번째 사람은 ${person03.name}/${person03.gen}/${person03.age}살/${person03.loc}")
println(person03)
println(person03.introduceMsg())
println()
var a:String = "테스트파일"
var b:String = "테스트파일"
// data class
println("--------- 데이터 클래스 -------------")
val person02_01 = Person02(1,"한우",26,"남자","원주");
println(person02_01)
println(person02_01.introduceMsg02())
println("------ null able -------")
// val person22 : Person
// person22 = null
// Person 이 들어가야 하기때문에 null 이 들어가면 오류 발생 -- ?를 붙이면 사용가능
val person22 : Person?
person22 = null
// 단점 : nullpointerexception 발생할 수 있음
}
class Person{
var id:Int=0
var name:String =""
var age:Int = 0
var gen:String = ""
var loc:String = ""
fun introduceMsg ():String = "자기소개 : 안녕, 나는 ${name}! ${age}살 ${gen}이고 ${loc} 출신이야!";
override fun toString(): String {
return "정보 ${id} : ${name}/${gen}/${age}살/${loc}";
};
}
// 데이터 클래스
data class Person02(var id:Int, // 주 생성자
var name:String, // 주 생성자
var age:Int, // 주 생성자
var gen:String, // 주 생성자
var loc:String // 주 생성자
){
fun introduceMsg02():String ="데이터 클래스 자기소개 : 안녕하세요, 저는 ${name}! ${age}살 ${gen}이고 ${loc} 출신입니다.";
}
반응형
'Another-Develop > kotlin' 카테고리의 다른 글
06 코틀린 - Jackson (0) | 2021.05.06 |
---|---|
05 코틀린 - init, mapOf() , toMap() (0) | 2021.04.27 |
04 코틀린 - When, downTo , .. , until (0) | 2021.04.21 |
03 코틀린 - MutableList (0) | 2021.04.20 |
02 코틀린 - readLine (자료형변환) , 배열 (0) | 2021.04.16 |