Language (107) 썸네일형 리스트형 [Kotlin] 스코프와 접근제한자 스코프 : 변수나 함수, 클래스 같은 멤버들을 서로 공유하여 사용할 수 있는 범위를 지정해 둔 단위 스코프가 지정되는 범위 - 패키지 내부, 클래스 내부, 함수 내부 등 하나의 패키지 안에 변수, 함수, 클래스가 있는데 함수, 클래스에 또 다른 변수, 함수가 있다면 패키지 스코프 안의 또 다른 하위 스코프로 동작하게 된다. 스코프의 세 가지 규칙 1. 스코프 외부에서는 스코프 내부의 멤버를 참조연산자로만 참조 가능하다. com.google.dimo.A → com.google.dimo 안에 있는 A라는 이름의 멤버 참조 2. 동일 스코프 내에서는 멤버들을 공유할 수도 있다. val a = "패키지 스코프" class B{ fun print(){ println(a) } } fun main(){ println.. [Kotlin] 기본 프로젝트 구조 물리적인 구조 프로젝트: 코틀린으로 어플리케이션을 짤 때 관련한 모든 내용을 담는 큰 틀 모듈: 하나의 프로젝트는 여러 모듈로 이루어질 수 있다. 이 모듈은 직접 만들 수도 있고 필요한 기능을 이미 구현해 둔 라이브러리 모듈을 가져와 붙일 수도 있기 때문에 편리한 기능 단위이다. 모듈은 폴더와 파일로 구성: 코틀린 코드 파일(.kr) 뿐만 아니라 모듈과 관련된 설정 및 리소스 파일 등도 포함될 수 있다. 논리적인 구조 패키지: 개발 시에 소속 코드의 소속을 지정하기 위한 논리적 단위 코드를 작성할 때는 코드 내에서 사용하는 이름이 용도에 따라 서로 충돌하지 않도록 고유한 패키지 이름을 지정하는 것이 좋다. * 일반적인 패키지 이름 짓는 법 개발한 회사가 가진 서비스 도메인을 거꾸로 배열하고, youtub.. [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.. 이전 1 2 3 4 5 6 7 ··· 14 다음