728x90
반응형
안녕하세요, 이번 포스팅은 코틀린 변수 범위, 접근제어자에 대해 다뤄보겠습니다.
(1) 변수 범위
- 1. 지역변수
: 함수, 반복문, 조건문 안쪽에서 사용되는 변수
- 2. 전역변수
: 어느 괄호로도 씌어진 부분 없이 전체적으로 사용될 수 있는 변수
var number100 : Int = 100
fun main(args: Array<String>) {
var test = Test("홍길동")
test.name
println(number100)
}
class Test(var name : String) {
fun testFun() {
var birth : String = "2000/3/1"
name = "홍길동"
number100 = 100
fun testFun2() {
var gender : String = "male"
}
}
fun testFun2() {
name
// birth << 사용 불가
}
}
이 소스에서는 "number100"이 전역 변수이고, birth, name과 같은 변수들이 지역 변수입니다.
(2) 접근 제어자
- 1. public : 어디서나 접근할 수 있음
- 2. private : 아무데서나 접근할 수 없음
fun main(args : Array<String>) {
val testAccess : TestAccess = TestAccess("아무개")
// private 키워드 때문에 외부에서 사용할 수 없다.
// testAccess.test()
// println(testAccess.name)
// testAccess.name = "아무개 투"
// println(testAccess.name)
val reward : Reward = Reward()
reward.rewardAmount = 2000
val runningCar : RunningCar = RunningCar()
runningCar.runFast()
// runningCar.run()
}
class Reward() {
var rewardAmount : Int = 1000
}
class TestAccess {
private var name : String = "홍길동"
constructor(name : String) {
this.name = name
}
fun changeName(newName : String) {
this.name = newName
}
private fun test() {
println("테스트")
}
}
class RunningCar() {
fun runFast() {
run()
}
private fun run() {
}
}
private 키워드가 있는 변수는 객체 변수.필드명 이렇게 접근할 수 없습니다.
※ 접근제어자 예제
package com.example.myapplication.Kotlin
fun main(array: Array<String>) {
val night = Night(20, 4)
val monster = Monster(15, 3)
night.attack(monster)
monster.attack(night)
}
class Night(private var hp : Int,private var power : Int) {
fun attack(monster: Monster) {
monster.depense(power)
}
fun depense(damage: Int) {
hp -= damage
if(hp > 0) {
heal()
println("기사 현재 체력은 $hp 입니다.")
} else println("기사가 죽었습니다.")
}
private fun heal() {
// 아무때나 사용하는게 아니라
// 공격을 당했을 때 죽지 않앗다면 힐을 한다
hp += 3
}
}
class Monster(private var hp : Int, private var power : Int) {
fun attack(night: Night) {
night.depense(power)
}
fun depense(damage : Int) {
hp -= damage
if (hp > 0) println("몬스터 현재 체력은 $hp 입니다.")
else println("몬스터가 죽었습니다.")
}
}
728x90
반응형
'모바일 > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 인터페이스, 상속과 인터페이스의 차이 (0) | 2021.04.11 |
---|---|
[Kotlin] 코틀린 상속 (0) | 2021.04.11 |
[Kotlin] 클래스(Class) 실습 TV 만들기 (0) | 2021.04.09 |
[Kotlin] 클래스(Class) 실습 은행 계좌 만들기 (0) | 2021.04.09 |
[Kotlin] 클래스(Class) 실습 계산기 만들기 (0) | 2021.04.09 |
댓글