Kotlin은 객체지향 언어로,
"클래스"와 "객체"를 적극적으로 활용합니다
클래스는 일종의 "명부 양식" 템플릿입니다
템플릿을 활용해 클래스에 속한 객체,
즉 "인스턴스" 를 생성할 수 있습니다
미리 정해둔 양식에 맞춰
객체의 정보(변수)를 관리하고,
객체에 명령(함수)를 작동시킬 수 있습니다
classMate (name, gradeinfo, classinfo) 클래스를 선언합니다
class classMate (var name:String, var gradeinfo:Int, var classinfo:Int){
fun introduce() {
println (" 저는 ${this.gradeinfo}학년 ${this.classinfo}반 ${this.name}입니다 ")
}
}
fun main() {
var 홍길동 = classMate("홍길동", 4,2)
홍길동.introduce()
println(" ${++홍길동.gradeinfo} 학년 진급 ! ")
}
var 홍길동 =
classMate ("홍길동", 4, 2)
인스턴스.introduce()
class 클래스이름 (var num1:Int, var num2:Int){
init {
}
}
class 클래스이름 {
var num1:Int = 0
var num2:Int = 0
constructor(num1:Int) {
this.num1 = num1
}
constructor(num1:Int, num2:Int) {
this.num1 = num1
this.num2 = num2
}
}
open class 상위 (num1 : Int) {
var num1:Int = num1
}
class 하위 (num1 : Int, num2 : Int) : 상위(num1) {
var num2:Int = num2
}
: 상위클래스()
var 인스턴스1 = 상위( 1 )
var 인스턴스2 = 하위( 1, 2 )
cmd+O
override fun을 검색하는 단축키
공통 속성을 가진 클래스를 복합적으로 관리할 때 사용합니다
open class가 중복 상속이 불가능한 "대분류"라면,
interface는 중복 구현되어도 되는 "해시태그"와 유사합니다
interface 인터페이스이름 {
fun 빈메소드()
}
class 하위 (num1 : Int, num2 : Int) : 상위(num1), 인터페이스이름 {
var num2:Int = num2
override fun 빈메소드() {
}
}
펭돌이.age++
펭돌이.산책()
다른 문서에 있는 "프로퍼티"와 "메서드"를 언급했습니다
아무 것도 붙이지 않으면 public으로 처리됩니다
age와 산책()은 public var / fun 으로 선언된 변수/함수 입니다
어디서든 경로 ( 펭돌이. )를 붙이면 클래스 내부에 접근할 수 있습니다
이러한 접근을 제한하고 싶다면, 반드시 "접근제한자"를 붙여야 합니다