

// 클래스를 이용해 객체 생성
class 클래스이름 {
}
// 클래스에 내용이 없다면 {} 생략가능
class 클래스이름1
// main안에서 클래스를 이용해 객체를 생성한다.
fun main(){
val 객체이름:클래스이름 = 클래스이름()
// 참조변수 선언시 클래스 타입 생략 가능
val 객체이름2 = 클래스이름()
}
기본 타입 : 실제 값을 변수에 저장
참조 타입 : 메모리의 주소값을 변수안에 저장
val 객체 이름
fun main(){
val student = Student()
student.printInfo()
student.score()
}
class Student{
var grade = 2
var classroom = 4
var name = "이채연"
var korean = 100
var english = 10
var math = 50
fun printInfo(){
println("저는 $grade 학년 $classroom $name 입니다.")
}
fun score(){
println("""
국어 점수 : $korean
영어 점수 : $english
수학 점수 : $math
""".trimIndent())
}
}
출력결과

class 클래스{
init{
println("객체가 생성되면 자동으로 동작하는 부분입니다")
}
}
constructor 를 이용하여 생성자를 정의오버로딩 : 한 클래스 내에 이미 사용하고 있는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
class 클래스이름 {
constructor(){
}
constructor(변수:기본자료형, 변수2:기본자료형){
}
}
class TestClass3{
var a1 = 0
var a2 = 0
constructor(a1:Int, a2:Int){
this.a1 = a1
this.a2 = a2
}
} 위의 코드와 아래는 같은 코드 class TestClass3 constructor(var a1:Int, var a2:Int)class 클래스이름 constructor(var 변수:기본자료형, var 변수2:기본자료형){
}
import javax.security.auth.Subject
fun main() {
var student = Student()
var students = Student(1,2)
// school에서 매개변수가 없으면 오류!
// 없는 상황을 정의하지 않았기 때문에 오류가 난다.
// var school = School()
val school = School("서울특별시","마포구")
school.printInfo()
val subject = Subject(0,0)
subject.printScore()
val subject2 = Subject(20)
subject2.printScore()
}
class Student{
init {
println("학생 정보 생성했습니다.")
}
constructor(){
}
constructor(grade:Int, classroom:Int){
println("$grade 학년 $classroom 반")
}
}
class School constructor(var city:String, var county :String){
fun printInfo(){
println("$city $county")
}
}
class Subject (var english:Int, var korean:Int ){
var math = 0
init{
println("init 블럭 코드 입니다.")
}
// 추가적인 생성자를 정의할 때는
// 클래스 이름 옆에 정의한 생성자를 반드시 호출해야 한다.
constructor() : this(100, 100)
constructor(english:Int) : this(english, 100){
println("매개 변수가 있는 생성자 호출")
}
fun printScore(){
println("국어점수 : $korean")
println("영어점수 : $english")
println("수학점수 : $math")
}
}
