💻

기존 데이터 유형에 점(.) 문법으로 엑세스 할 수 있는 새로운 속성, 함수를 추가해 액세스 할 수 있게 할 수 있다. 확장 속성 추가 확장 속성은 데이터를 저장할 수 없으므로 get-only여야 한다. 확장 속성을 정의하는 법은 다음과 같다. val 타입.속성명: 데이터타입 [getter 함수] 예시 class Planets() { val earth = "지구" val mars = "화성" } val Planets.order: String get() = "${earth} 다음은 ${mars}" fun main() { val p = Planets() print(p.order) } 출력 : "지구 다음은 화성" 확장 함수 추가 확장 함수을 정의하는 법은 다음과 같다. fun 타입.함수이름 (매개변수): r..
제네릭 제네릭(일반 데이터 유형)이란 데이터타입을 일반화하는 것으로 어떤 데이터 타입이 들어올지 모르는 곳에 제네릭을 사용한다. 사용법 사이에 데이터 유형의 이름을 써서 사용. class className ( val propertyName: genericDataType ) fun main() { val instanceName = className (property) } ex) class Question (val question: String, val answer: T) fun main() { val question1 = Question ("1+1", 2) val question2 = Question ("2+2=4", true) } enum 클래스 가능한 값 집합이 제한되어 있는 유형 사용법 class 앞..
Kotlin은 함수를 데이터 유형으로 간주할 수 있고 함수를 변수에 저장하고 저장한 함수를 다른 함수에 인수로 전달하며 다른 함수에서 함수를 반환할 수 있다. 변수에 함수 저장 함수를 값으로 참조하려면 함수 참조 연산자 :: 를 사용해야 한다. ex) fun main() { val name = ::method name() //함수가 저장된 변수는 함수처럼 ()를 붙여줘야 함 method() } fun method() { println("메서드") } 출력 : "메서드" "메서드" fun main() { val name = ::method val c = name() println(c) val d = method() println(d) } fun sum(a: Int, b: Int): Int { return ..
위임은 어떤 클래스의 멤버를 참조 없이 호출하고 싶을 때 사용 하는 선언 방식이다. 인터페이스 interface란 구현하는 클래스가 준수 해야하는 규칙을 적어 놓은 클래스이다. 즉, 사전에 메서드와 변수 등을 정의해 놓으면 구현하는 클래스가 그 정의해 놓은 것을 구현해야 한다. 위임 위임을 사용하면 실제로 상속하지는 않지만 상속과 비슷한 효과를 낼 수 있다. 즉 클래스의 모든 기능을 사용하는 동시에 기능을 추가로 구현할 수 있다. 위임을 하는 법은 다음과 같다. var name by 위임객체//프로퍼티의 값이 변경될때마다 위임객체가 실행된다. class ClassName(name: String, ic: InterfaceClass) : InterfaceClass by ic { ...//ic(인터페이스 클래..
객체지향프로그래밍의 목적 중 캡슐화를 하려면 공개상태 수정자는 필수이다. 수정자별 액세스 가능한 범위 수정자 동일한 클래스 서브클래스 동일한 모듈 모듈 외부 private o x x x protected o o x x internal o o o x public o o o o 공개상태 지정 기본적인 형태 수정자 var 이름: 타입 = 초기값 setter나 getter함수의 공개 범위도 따로 지정할 수 있다. var 이름: 타입 = 초기값 수정자 set 수정자 var 이름: 타입 = 초기값 수정자 set 이 형식은 set의 범위가 더 작아야 한다. ex) 첫 번째 수정자 = protected, 두 번째 수정자 = private setter 커스텀 함수일 경우 var 이름: 타입 = 초기값 수정자 set(va..
상속, 포함등 Kotlin의 클래스 관계에 대해 설명할 것이다. Kotlin에서는 모든 클래스가 최종이므로 그냥 클래스를 확장할 수 없다. 따라서 클래스 간의 관계를 클래스에 정의해 줘야 확장할 수 있다. 슈퍼클래스(부모클래스) 만들기 클래스에 open을 붙여 확장가능성을 부여할 수 있다. open class ClassName(val name1: String, val name2: String) { ... } 서브클래스(자식클래스) 만들기 다음과 같이 서브클래스를 만들 수 있다. class subclassName ([선택]매개변수) : superclassName ([선택]매개변수) { ... } 클래스 간의 관계 상속관계 상위클래스가 일반적인 개념 클래스이고 하위클래스가 구체적인 개념클래스인 경우이다. 단..
implement
'분류 전체보기' 카테고리의 글 목록 (8 Page)