엔지니어 규의 IT 프로그래밍 다이어리

[Kotlin]7. 클래스의 기본 구조 본문

프로그래밍 언어/코틀린

[Kotlin]7. 클래스의 기본 구조

엔지니어 규 2022. 5. 8. 17:03
728x90

클래스

 

클래스란 '값' 과 그 값을 사용하는 '기능' 들을 묶어놓은것이다.

 

우리가 지금까지 배운 여러가지 자료형 들 역시 Kotlin 내부에서는 모두 class 로 이루어져 있다.

 

클래스 =  속성(고유의 특징값) + 함수(기능의 구현) 

 

또한 클래스는 '인스턴스' 를 만드는 이라는 점을 이해 해야 한다. 

 

인스턴스란 클래스를 이용해서 만들어 내는 서로 다른 속성의 객체를 지칭하는 용어 이다.

 

갑자기 객체, 인스턴스, 클래스 라는 용어가 등장해서 햇갈릴수 있다.

 

쉽게 생각하면 속성이 있으며, 행위를 할 수 있는 것들은 객체라고 할 수 있다.

 

 

자동차는 객체다.

 

자동차는 핸들,바퀴,창문 등등.. 의 속성이 있고,

이동,창문내리기,에어컨, 음악틀기, 네비게이션  등등 의 기능이 있다.

 

 

 

신용카드 역시 객체다.

 

신용카드는 마그네틱, 숫자, 생성일, 카드주인.. 등등의 속성이 있고

결제 기능이 있다.

 

 

 

 

 

인스턴스란 무엇일까?

 

클래스에 의해 객체가 선언되어 실체가 되면 이것을 인스턴스라고 한다.

 

너무 어렵다면 객체 = 인스턴스 라고 생각하면 편하다.

 

정리하자면

객체(Object) 소프트웨어 세계에 구현할 대상이고, 

이를 구현하기 위한 설계도가 클래스(Class)이며, 

이 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스(Instance)이다. 

 

 

이해가 안될수 있으니 간단하게 사람의 이름과 출생년도를 관리하는 클래스를 생성해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fun main(){
    var a = Person("박보영",1994)
    var b = Person("김종국",1990)
    var c = Person("이나영",1998)
 
    println(a.name)  //박보영
    println("안녕하세요 저의 이름은 ${a.name}이고 ${a.birthyear} 년생입니다.") 
// 안녕하세요 저의 이름은 박보영이고 1994 년생입니다.
    b.introduce() // 안녕하세요 저의 이름은 김종국 이고  1990 년생입니다.
}
 
class Person(var name: String, var birthyear: Int){
    fun introduce(){
        return println("안녕하세요 저의 이름은 ${name} 이고  ${birthyear} 년생입니다.")
    }
}
cs

 

위에서 박보영, 김종국, 이나영 을 Person class 로 세사람의 인스턴스를 만들었다.

 

var a = Person("name", "birthyear") 처럼 Person class 에 속성을 넣으면, var a 에는 Person class 의 인스턴스가 할당된다.

 

변수 = class 이름( class 속성1, 속성2,...) 순으로 클래스의 인스턴스를 생성한다.

 

println("안녕하세요 저의 이름은 ${a.name}이고 ${a.birthyear} 년생입니다.") 

 

와 같이 자기소개를 하는 기능이 필요하다고 가정할때, 이것을 매번 반복해서 적는것이 굉장히 귀찮은 일이다.

 

그래서 

fun introduce(){
        return println("안녕하세요 저의 이름은 ${name} 이고  ${birthyear} 년생입니다.")
    }
처럼 introduce 메소드를 만들어서 각 인스턴스가 메소드를 사용할 수 있도록 하면 편리하다.
 
 
참고로 Class 내부의 함수를 메소드라고 하며
기본적으로 java 와 Kotlin은 객체지향 프로그래밍 언어이기 때문에 , 우리가 지금까지 사용했던 함수(println, for 등..) 들은
모두 메소드라고 할 수 있다.

 

변수명.속성명  (a.name) 으로 인스턴스의 속성을 불러올 수 있으며

변수명.메소드(b.introduce()) 으로 인스턴스의 메소드를 불러 올 수 있다.

 

코틀린은 객체지향 언어를 기반으로 함수형 언어의 장점을 흡수한 실용적 언어이다.

 

객체지향의 기본이 되는 클래스를 이해하는것은 프로그래밍 에서 굉장히 중요하다.

728x90
Comments