반응형
코틀린은 함수형 프로그래밍과 더불어 객체 지향 프로그래밍 기법을 지원합니다.
객제 지향 프로그래밍 기법 개념
- 추상화 : 특정 클래스를 만들 때 기본 형식을 규정하는 방법
- 인스턴스 : 클래스로부터 생성한 객체
- 상속 : 부모 클래스의 내용을 자식 클래스가 그대로 물려받음
- 다형성 : 하나의 이름으로 다양한 처리를 제공
- 캡슐화 : 내용을 숨기고 필요한 부분만 사용
- 메시지 전송 : 객체 간에 주고받는 메세지
- 연관 : 클래스 간의 관계
객체 지향 프로그래밍의 용어 정리
코틀린에서 사용하는 언어 | 다른 언어에서 사용하는 언어 |
클래스(Class) | 분류, 범주 |
프로퍼티(Property) | 속성(Attribute), 변수(Variable), 필드(field), 데이터(data) |
메서드(Method) | 함수(Function), 동작(Operation), 행동(Behavior) |
객체(Object) | 인스턴스(Intance) |
클래스 선언하기
class Bird{ }
class Bird // 빈 형태일 경우 중괄호 생략가능
class Bird {
//프로퍼티
//메서드
}
클래스 사용 예)
class Bird{
var name:String = "mybird"
var wing:Int =2
var beak:String = "short"
var color:String ="blue"
fun fly() = println("Fly wing : $wing")
fun sing(vol:Int) = println("Sing : $vol")
}
fun main(){
val coco= Bird() // Bird로부터 만들어진 객체 coco
coco.color="Red" // 객체 프로퍼티에 값 할당
println("coco.color : ${coco.color}") // coco.color : Red
coco.fly() // Fly wing : 2
coco.sing(3) // Sing : 3
}
생성자
생성자란 클래스를 통해 객체가 만들어질 때 기본적으로 호출되는 함수를 말합니다.
클래스 안의 프로퍼티 값을 미리 초기화 해둬도 되지만 그러면 항상 같은 값의 프로퍼티를 가진 객체가 만들어질 것입니다.
class 클래스 이름 constructor(매개변수){ // 주 생성자 위치
constructor(매개변수){ // 부 생성자 위치
// 프로퍼티 초기화
}
[constructor(매개변수){ }] // 추가 부 생성자 위치
}
주 생성자 사용 예)
class Bird constructor(_name:String, _wing:Int, _beak:String, _color:String){ // 주 생성자
var name:String=_name
var wing:Int=_wing
var beak:String=_beak
var color:String=_color
fun fly() = println("Fly wing : $wing")
fun sing(vol:Int) = println("Sing : $vol")
}
fun main(){
val coco= Bird("mybird",2,"short","blue") // Bird로부터 만들어진 객체 coco
coco.color="yello"
println("coco.color : ${coco.color}") // coco.color : Red
coco.fly() // Fly wing : 2
coco.sing(3) // Sing : 3
}
프로퍼티를 포함한 주 생성자 예)
class Bird(var name:String, var wing:Int, var beak:String, var color:String){ // constructor 생략
// 프로퍼티는 매개변수 안에 var를 사용해 프로퍼티로서 선언되어 본문에서 생략됨
fun fly() = println("Fly wing : $wing")
fun sing(vol:Int) = println("Sing : $vol")
}
fun main(){
val coco= Bird("mybird",2,"short","blue")
}
부 생성자 사용 예 )
class Bird{
var name:String
var wing:Int
var beak:String
var color:String
constructor(name:String, wing:Int, beak:String, color:String){ // 부 생성자
this.name=name
this.wing=wing
this.beak=beak
this.color=color
}
}
fun main(){
val coco= Bird("mybird",2,"short","blue") // Bird로부터 만들어진 객체 coco
}
부 생성자 여러 개 사용 예)
class Bird{
var name:String
var wing:Int
var beak:String
var color:String
constructor(name:String, wing:Int, beak:String, color:String){
this.name=name
this.wing=wing
this.beak=beak
this.color=color
}
constructor(name:String, color:String){
this.name=name
this.wing=2
this.beak="short"
this.color=color
}
}
fun main(){
val coco= Bird("mybird",2,"short","blue") // 첫 번째 부 생성자 호출
val coco2=Bird("secondvird","red") // 두 번째 부 생성자 호출
}
반응형
'Do it 코틀린 프로그래밍' 카테고리의 다른 글
코틀린 제네릭 (0) | 2020.08.20 |
---|---|
코틀린 상속과 다형성 (2) | 2020.08.19 |
코틀린 흐름 중단과 변환 (7) | 2020.05.23 |
코틀린 반복문( for, while, do while ) (0) | 2020.05.22 |
코틀린 조건문 ( if~else, when ) (0) | 2020.05.19 |
댓글