객체지향 용어
class study{
....
....
}
class Student { // 클래스의 정의
// 프로퍼티들(속성)
var name: String = "gil dong"
var age: Int = 24
// 메서드들(함수)
fun name() = println("Student name: $name")
}
fun main(){
val student = Student() // 객체 생성
student.age = 26 // 값 할당
println("student name: "${student.name}) // 객체의 맴버 프로퍼티 읽기
student.name() // 객체의 맴버 메서드 사용
}
▪️ 인스턴스
- student 클래스는 틀일 뿐이다. 실제 메모리에서 실행되고 있는 것이 아니다.
- Heap 메로리에 올라간 객체를 인스턴스라 부른다.
- java는 new 키워드를 통해 Object를 생성하지만, 코틀린은 별도의 키워드를 사용하지 않는다.
class Student (var name:String, var age:Int){ // 주 생성자
fun name() = println("Student name / age: $name / $age")
}
fun main(){
val student = Student("gil dong", 24) // 객체 생성
}
주 생성자 , 부 생성자 동시 선언 가능
class Student (var name:String){ // 주 생성자
var age:Int = 0
constructor(name:String, age:Int) : this(name){ // 부 생성자
this.age = age
}
fun name() = println("Student name / age: $name / $age")
}
fun main(){
val student = Student("gil dong", 24) // 객체 생성
student.name()
}
class Student (_name:String){ // 주 생성자
var name:String = _name
var age:Int = 0
constructor(_name:String, _age:Int) : this(_name){ // 부 생성자
this.age = _age
}
fun name() = println("Student name / age: $name / $age")
}
fun main(){
val student = Student("gil dong", 24) // 객체 생성
student.name()
}
class Student (_name:String){
var name:String = ""
var age:Int = 0
init{
this.name = _name
println("name: "+this.name)
}
constructor(_name:String, _age:Int) : this(_name){ // 부 생성자
this.age = _age
}
fun name() = println("Student name / age: $name / $age")
}
fun main(){
val student = Student("gil dong", 24) // 객체 생성
student.name()
}
/*
init 호출
init name: gil dong
부 생성자 호출
Student name / age: gil dong / 24
*/
init{ }은 객체가 만들어질때 제일 먼저 호출된다.
class Student (var name:String="hoon", var age:Int){ // 주 생성자
fun name() = println("Student name / age: $name / $age")
}
fun main(){
val student = Student(age=24) // 객체 생성
student.name()
}
default 값 이외의 값은 "변수명=값" 형태로 입력