전체 글58 [Kotlin 문법 종합] - 널 세이프티 @@수정하기 1. 널 세이프티 : Null 예외로부터 안전한 설계를 위해 자료형에 Null 여부를 명시 ?, !!, ?. , ?: 1) ? null 할당 허용 기호 * null 허용 여부에 따라 String과 String? 는 서로 다른 자료형임 // null을 저장하지 않고 설계하려면 lateinit var 로 대체할 수 있음 { println("이름을 입력해주세요") while(true) { try { var originName = readLine() if(originName?.first() != '_' && originName?.first() != '!') { //.first()는 첫번째 인자 반환 return originName } else { println("이름을 다시 입력해주세요") } } catch(e.. 2024. 3. 6. [Kotlin 문법 종합] - 지연 초기화 (@@0313 추가중~) 1. 지연 초기화 : 클래스 설계 시 초기의 값 설정하기 애매할 때, 나중에 대입 (+) 메모리의 효율적인 사용 1) 변수 --> lateinit - isInitialized --> 변수 사용 전, 초기화되었는지 확인해 true/false 반환 ( !::name.isInitialized) - 값이 아니라 참조형태로 사용해야 하기에 this::~ 또는 :: 붙임 // var에만 사용 가능, 프로퍼티에 대한 게터, 세터를 사용할 수 없음(초기화된 뒤에는 수정 가능하긴 한 듯) fun main(){ var s1 = Student() s1.name = "참새" //이 때 초기화됨 s1.displayInfo() s1.age = 10 s1.displayInfo() } class Student { lateinit v.. 2024. 3. 6. [Kotlin 문법 종합] - 예외처리 # 수정하기 1. 예외처리 * 예외 : 런타임 에러 * 오류 : 컴파일 에러 (실행 전) (+) 안정성 1) try-catch : 완벽한지 애매한 부분을 try로 감싸기 fun method1() { try { // } catch(예외종류) { //예시 = e:java.lang.NumberFormatException // } } while(true) { //무한반복. break 작성 필수 try { var num1 = readLine()!!.toInt() println("내가 입력한 숫자는 ${num1}입니다") break } catch(e:java.lang.NumberFormatException) { println("숫자를 입력하세요") } } while(true) { try { var num1 = readLine(.. 2024. 3. 6. [Kotlin 문법 종합] - 접근제한자와 관련 용어 정리 1. 관련 용어 정리 1) 프로젝트 : 최상단 개념. 모듈, 패키지, 클래스를 포함함 2) 모듈 : 패키지, 클래스를 포함 //java, res 폴더 포함. app폴더 3) 패키지 : 클래스를 포함 //java폴더 하위파일들을 포함. 클래스는 동일 페이지라고 생각하면 될듯 4) 접근 : 객체를 이용해 변수나 메소드를 호출할 수 있는지의 여부. 2. 접근제한자 (+) 변수, 메소드 등의 데이터로의 무분별한 접근(.통해 접근하는거) 막고 유지보수에 용이 1) public : 어디서나 접근 가능. 명시하지 않았으면 기본적으로 public 2) protected : 기본적으로는 동일한 클래스 내에서만 + 상속 받은 경우 접근가능 (최상위(open)클래스에는 불가능, 프로퍼티에는 가능?) 3) internal :.. 2024. 3. 6. [Kotlin 문법 종합] - 인터페이스, 추상 클래스 1. 인터페이스 : 부모 클래스와 별개로 다른 그룹과 겹치는 기능 구현 시 사용... - 근본적인 공통점을 상속받고, 추가적인 기능들은 인터페이스로 추가 - 추상메소드 사용 권장 (구현 시 정의, 구현 필수) //인터페이스는 다중구현 가능, 클래스는 다중상속 불가능 //인터페이스는 그 자체의 인스턴스 필드를 갖지 못함 //인터페이스 : 인터페이스 가능 interface WaterBirdBehavior { //변수 값을 가질 수는 없음. 상수는 가질 수 있어도 fun swim() //추상메소드 쓰는 게 좋음... // fun swim() { // println("수영 합니다") // } } fun main() { var bird = Bird("새") var chicken = Chicken("닭") var .. 2024. 3. 5. 이전 1 ··· 7 8 9 10 11 12 다음