Language (105) 썸네일형 리스트형 [Kotlin] 오버라이딩, 추상화, 인터페이스 오버라이딩 상속 시에는 기본적으로 수퍼클래스에 있는 함수와 같은 이름과 형태를 가진 함수는 서브클래스에서 만들 수 없다. 하지만 수퍼클래스에서 허용만 한다면(open 키워드 사용) 오버라이딩이라는 방법으로 서브클래스에서 같은 이름과 형태로 된 함수의 내용을 다시 구현(override 키워드 사용)할 수 있다. fun main(){ var t = Tiger() t.eat() // 고기를 먹습니다 } open class Animal{ open fun eat(){ println("음식을 먹습니다") } } class Tiger : Animal(){ override fun eat(){ println("고기를 먹습니다") } } 추상화 오버라이딩과 다르게 수퍼클래스에서는 함수의 구체적인 구현은 없고 단지 Anim.. [Kotlin] 클래스의 상속 상속이 필요한 이유 1. 이미 존재하는 클래스를 확장하여 새로운 속성이나 함수를 추가한 클래스를 만들어야 할 때 2. 여러 개의 클래스를 만들었는데 클래스들의 공통점을 뽑아 코드 관리를 편하게 할 때 수퍼 클래스: 속성과 함수를 물려줌 서브 클래스: 속성과 함수를 물려받음 open: 클래스가 상속될 수 있도록 클래스 선언 시 붙여주는 키워드 (코틀린은 상속 금지가 기본값) 상속의 규칙 서브 클래스는 수퍼 클래스에 존재하는 속성과 같은 이름의 속성을 가질 수 없다. → 클래스의 자체 속성으로 만들어주는 var을 붙이지 말고 일반 파라미터로 받아 수퍼 클래스의 생성자에 직접 넘겨준다. 서브 클래스가 생성될 때는 반드시 수퍼클래스의 생성자까지 호출되어야 한다. fun main(){ var a = Animal(.. [Kotlin] 클래스의 생성자 생성자: 새로운 인스턴스를 만들기 위해 호출하는 특수한 함수 생성자의 기능? 인스턴스의 속성을 초기화, 인스턴스 생성 시 구문을 수행(init 함수를 통해) 기본 생성자(init 함수) : 파라미터나 반환형이 없는 특수한 함수. 생성자를 통해 인스턴스가 만들어질 때 호출 fun main() { var a = Person("박보영", 1990) // 1990년생 박보영님이 생성되었습니다. var b = Person("전정국", 1997) // 1997년생 전정국님이 생성되었습니다. var c = Person("장원영", 2004) // 2004년생 장원영님이 생성되었습니다. } class Person (var name:String, var birthYear:Int) { init { println("${th.. [Kotlin] 클래스의 기본 구조 클래스 : 고유의 특징값인 속성 + 기능을 구현한 함수 class Person (var name:String, var birthYear:Int) // 클래스 속성 클래스는 인스턴스를 만드는 틀 인스턴스 : 클래스를 이용해서 만들어내는 서로 다른 속성의 객체 fun main(){ var a = Person("박보영", 1990) var b = Person("전정국", 1997) var c = Person("장원영", 2004) } class Person (var name:String, var birthYear:Int) 인스턴스를 담은 변수 사용 변수명.속성명 fun main(){ var a = Person("박보영", 1990) var b = Person("전정국", 1997) var c = Person(.. [Kotlin] 흐름제어와 논리연산자 흐름제어 키워드 return - 함수를 종료하고 값 반환 break - 반복문 내의 구문이 실행되는 중간에 즉시 반복문을 종료하고 다음 구문으로 넘어감 continue - 다음 반복 조건으로 즉시 넘어감 for(i in 1..10){ if(i == 3) break println(i) } // 출력: 1 2 for(i in 1..10){ if(i == 3) continue println(i) } // 출력: 1 2 4 5 6 7 8 9 10 다중 반복문에서 break나 continue가 적용되는 반복문을 label을 통해 지정할 수 있는 기능 (코틀린에서 추가됨) 고전적인 언어에서는 내부 반복문에서 조건을 체크하여 break(continue)를 하더라도 외부 반복문에서 또 다시 조건을 체크하여 모든 반복문.. [Kotlin] 반복문과 증감연산자 증감연산자 증가연산자(값을 1 증가시킴) : ++a (전위) a++ (후위) 감소연산자(값을 1 감소시킴): --a (전위) --a (후위) 전위 연산자는 연산자가 포함된 구문에서 이미 증감된 수를 반영하여 연산 진행, 후위 연산자는 증가나 감소된 수를 해당 구문에서 사용하지 않고 ‘다음 구문’부터 사용 while (조건형 반복문) var a = 0 while(a < 5){ println(a++) } // 출력: 0 1 2 3 4 do..while문 (조건형 반복문) 최초 한 번은 조건없이 do에서 구문을 실행한 후 while로 조건 체크 var a = 0 do { println(a++) } while(a < 5) for문 (범위형 반복문) 인덱스로 사용할 변수에는 var 등을 붙이지 않아도 된다. fo.. [Kotlin] 조건문과 비교연산자 비교연산자 = != == is 연산자 (자료형이 맞는지 체크) ex. a is Int !is 연산자 (자료형이 틀린지를 체크) ex. a !is Int if문 var a = 11 if(a > 10) { println("a는 10보다 크다") } else { println("a는 10보다 작거나 같다") } // 출력: a는 10보다 크다 When문 (다중 조건문) 다른 언어에서 지원하는 switch문을 좀 더 편리하게 바꾼 기능 fun main(){ doWhen(1) // 정수 1입니다 doWhen("DiMo") // 디모의 코틀린 강좌입니다 doWhen(12L) // Long 타입입니다 doWhen(3.14159) // String 타입이 아닙니다 doWhen("Kotlin") // 어떤 조건도 .. [Kotlin] 타입추론과 함수 타입추론 자료형 없이 값을 할당하면? 일반 정수형 리터럴 → Int로 추론 L이 붙은 정수형 리터럴 → Long으로 추론 일반 실수형 리터럴 → Double로 추론 f가 붙은 실수형 리터럴 → Float로 추론 16진수와 2진수 → Int로 추론 var a = 1234 // Int var b = 1234L // Long var c = 12.45 // Double var d = 12.45f // Float var e = 0xABCD // Int var f = 0b0101010 // Int var g = true // Boolean var h = 'c' // Char 반드시 특정한 자료형으로 지정해야하는 상황이 아니라면 대부분은 코틀린의 타입추론 기능을 이용하여 코드량을 줄일 수 있다. 함수 fun 함수명(.. 이전 1 2 3 4 5 6 7 ··· 14 다음 목록 더보기