1. 함수 사용
fun 함수명(파라미터: 타입):반환타입{
return 값
}
ex)
var x: Int = 10
fun square(x: Int): Int{
return x*x
}
fun main(){
var x: Int = 10
var squareResult = square(10)
println("${x}의 제곱근은? ${squareResult}")
printSum(10, 20)
val PI = getPi()
println("파이의 값은? ${PI}")
}
// 파라미터 사용, 반환 값
fun square(x: Int): Int{
return x * x
}
// 파라미터 사용. 반환 값 없음
fun printSum(x: Int, y: Int){
println(" x + y = ${x + y}")
}
// 파라미터 없음.. 반환 값 있음.
fun getPi(): Double{
return 3.14
}
2. Constructor
1) 매개변수가 있는 생성자 method가 정의 시 default 생성자 method는 자동 생성 안 됨.
매개변수가 있는 생성자가 없으면 compile 시 자동 생성 됨.
수동으로 정의할 수도 있음.
2) secondary constructor. 생성자에서도 overloading 규칙이 있음.
class DemoA{
var a: Int = 0
var b: Int = 0
var c: Int = 0
init{
println("DemoA class 초기화")
}
// 디폴트 생성자 수동 정의
constructor(){}
constructor(value: String){
println("values: ${value}")
}
constructor(value: Int){
println("values: ${value}")
}
constructor(value1: Int, value2: String){
println("values: ${value1}")
println("values: ${value2}")
}
}
3) primary 생성자 keyword 생략 가능.
접근자 없이 생성하고자 할 경우에 constructor 생략 가능.
class DemonB(a: Int, b: Int, c: Int){
init{
println("a파라미터 값은? ${a}")
println("b파라미터 값은? ${b}")
println("c파라미터 값은? ${c}")
}
}
class DemoC{
var a: Int
var b: Int
init {
a = 10
b = 10
println("DemoC: ${a}")
println("DemoC: ${b}")
}
constructor(){
println("DemoC() 기본 생성자 호출됨")
}
}
fun main(){
var demoA = DemoA() // new keyword 사용 안 함
demoA.a = 10
demoA.b = 20
demoA.c = 30
println("demoA.a : ${demoA.a}")
println("demoA.b : ${demoA.b}")
println("demoA.c : ${demoA.c}")
}
공부 더 필요
3. 파라미터 유무에 따른 생성자 호출.
1) 파라미터가 없는 class. constructor keyword 생략. primary 생성자.
class Kotlin(){
init {
println("파라미터가 없는 클래스 호출")
}
}
2) 파라미터가 있는 secondary constructor.
class KotlinTwo{
constructor(value: String){
println("파라미터 값은 ${value}")
}
}
3) property와 method가 있는 class: 변수 -> property, 함수 - method
class KotlinThree {
var one: String = "None"
fun printOne(){
println("one 변수 값은? ${one}입니다/")
}
}
4) Object :
Java로 설명하면 static member. method 호출 시 클래스명.staticmember, 클래스명.staticmethod()
class KotlinFour {
companion object{
var one: String = "None"
fun printOne(){
println("one 변수 값은? ${one}입니다/")
}
}
}
4. Class 호출
1) 생성자 없는 Class 호출
fun main(){
Kotlin()
}
2) parameter가 1개 있는 생성자 사용
fun main(){
KotlinTwo("Hello World")
}
3) Class의 field와 method 사용
fun main(){
var Kotlin = KotlinThree()
// method 호출
Kotlin.printOne()
// field에 값 변경
Kotlin.one="하나"
Kotlin.printOne()
}
4) Companion Object 사용
fun main(){
KotlinFour.printOne()
KotlinFour.one = "한개"
KotlinFour.printOne()
}
5) Data Class 사용하기
Parameter가 val 사용하면 값을 재할당 할 수 없음.
아래 코드에서 userData.name ="이순신" 할 수 없다는 것.
for main(){
var userData = UserData("홍길동", 100)
println("userData 정보? ${userData.name}")
println("userData 정보? ${userData.age}")
userData.age = 200
println("userData 정보? ${userData.age}")
}
5-1) toString() method 생략됨
일반적으로 Class는 toString() method가 Class의 형 이름과 instance 주소가 출력되는데
Data Class의 특성으로 생략된다.
fun main(){
println("userData 객체 정보? ${userData}")
//println("userData 객체 정보? ${userData.toString()}")
}
5-2) 값 복사. 값만 복사한다.
fun main(){
var newData = userData.copy()
newData.age = 500
println("userData 정보? ${userData.age}")
println("userData 정보? ${newData.age}")
}
5. Data Class
Java의 VO에 해당하는 성격으로 data가 생성됨.
get, set 지원이 됨.
data class UserData(val name: String, var age: Int)
1) Data Class를 일반 Class로 사용 가능
data class UserData2(val name: String, var age: Int){
init {
}
fun progress(){
}
}
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 추상 Class (0) | 2022.02.17 |
---|---|
[Kotlin] 상속과 확장 (0) | 2022.02.17 |
[Kotlin] collection(list, map, set) (0) | 2022.02.17 |
[Kotlin] 배열 (0) | 2022.02.16 |
[Kotlin] 조건문, 반복문 (0) | 2022.02.16 |