코틀린 객체지향-1

Bang!·2022년 1월 12일
0

Android(코틀린)

목록 보기
2/15
post-thumbnail


04-01 클래스와 생성자
클래스 선언
- 코틀린에서 클래스는 class 키워드로 선언한다
- 예) class Uber { }

- 코틀린에서는 생성자는 contructor라는 키워드로 선언한다
- 예)
class User{
    constructor(name:String)
}

- 코틀린에서는 객체를 생성할 때 new 키워드를 사용 하지 않는다
	○ 예(java)) SomeClass sclass = new SomeClass(); 같이 new는 없음
	○ 예(kotlin)) val user = User("kim")
			User.someFun()

주 생성자
- 클래스에서 코틀린는 주 생성자와 보조 생성자로 구분한다
- 주 생성자 선언
○ class User constructor( ) { }
○ 주 생성자를 선언할 때 constructor 키워드 생략 가능
○ class User ( ) { }
- 만약 클래스의 주 생성자를 선언하지 않으면 compiler 자동으로 contructor를 만든다
○ class User{ }

주 생성자와 매개변수
- 주 생성자를 선언할 때 필요에 따라 매개변수를 선언 가능
- 예시1) (주 생성자의 매개변수)
class User{
constructor(name:String, count: Int)
}
- 객체를 생성할 때 매개변수의 타입과 개수에 맞는 인자를 전달해야한다
- 예시2) (예시1의 매개변수가 있는 생성자 호출)
val user = User("kkang",10)

주 생성자의 본문 - init 영역
- 주 생성자를 이용해 객체를 생성할 때 특정 로직을 수행 가능
- 하지만 밑에 예시처럼 하면 오류남
- 예시)
class User{

		}
		{
		}
	- 주 생성자에는 { } 를 추가할수 없다
		§ 이유: 주 생성자 클래스 선언부에 있기 때문
		§ 이럴때 init 키워드 사용해서 주 생성자오 본문을 구현 가능
	- 코틀린의 클래스 안에서 init 키워드로 지정한 영역은 객체를 생성할 때 자동으로 실행
		§ `init`영역은 보조 생성자로 객체를 생성할 때도 실행 됨
		§ `init` 영역은 일반적으로 주 생성자의 본문을 구현하는 용도로 사용한다
	- 예시)
		
class User{
    init{
        println("i am init...\n iam groot")
    }
}

새성자의 매개변수를 클래스의 멤버 변수로 선언하는 방법
- 생성자의 매개변수는 기본적으로 생성자에서만 사용할 수 있는 지역 변수
▪ 예시1) (생성자의 매개 변수를 init 영역에서 사용하는 예)
class User(name: String, count: Int){
init{
println("name: $name, count: $count") //성공
}

	    fun someFun(){
	        println("name: $name, count: $count") //error
	    }
	}


	▪ 예시2) (생성자의 매개 변수를 다른 함수에서 사용하는 예)
	
	class User(name: String, count: Int){
	    //클래스 멤버 변수 선언
	    var name: String
	    var count: Int
	    init{
	        this.name = name
	        this.count = count
	    }
	    fun someFun(){
	        println("name: $name, count: $count") //성공
	    }
	}

	fun main() {
	    var User = User("stef",10)
	    User.someFun()
	}
	=>결과: name: stef, count: 10
		§ 설명:클래스의 멤버 함수 someFun()에서 생성자의 매개변수를 이용하고자 클래스의 멤버 변수를 선언하고 주 생성자의  본문인 init 영역에서 매개변숫값을 클래스 멤버 변수에 대입
	
- 예시2 방법 말고도 init 사용하는게 아니라 매개변수를 var나 val 키워드로 선언하면 멤버 변수가 된다
	▪ 예시3)
	class User(val name: String, val count: Int){
	        fun someFun(){
	        println("name: $name, count: $count") //성공
	        }
	}
	
	fun main() {
	    var User = User("stef",10)
	    User.someFun()
	}
- 원래는 매개변수를 선언할 때 var 나 val 키워드를 추가할 수 없다
	▪ 하지만 주 생성자에서만 var나 val 선언 가능
profile
pro한 프로그래머가 되자!

0개의 댓글

관련 채용 정보