본문 바로가기

전체 글90

[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.
[Kotlin 문법 종합] - 오버라이딩, 오버로딩 # 수정하기 1. 오버라이딩 : 상속받은 부모클래스의 정보(프로퍼티)나 행위(메소드) 재설계 = 리디파인...? - 받는 인자의 개수, 타입 같음 - 부모 클래스의 메소드와 같은 이름을 가진 하나의 함수만을 가짐 = 부모 클래스의 메소드와는 다른 메소드가 된 것 (+) 자식 클래스만의 정보, 동작을 만들 수 있음 (+) 재사용성, 일관성 등의 장점 유지 *오버라이딩 단축키 Control + O fun main() { var bird = Bird("새") var chicken = Chicken("닭", 2) bird.fly() chicken.fly() } open class Bird(name:String) { //open 작성 var name: String = "" init { this.name = name } ope.. 2024. 3. 5.
[Kotlin 문법 종합] - 상속 상속 (+) 부모/자식 클래스로 구분해 공통적인 요소들을 한번에 작성 가능 (+) 다형성 구현 (+) 부모 클래스에서 변경한 내용이 자식 클래스에도 적용 ** 코틀린에서는 생략된 final 키워드 때문에 기본적으로 상속이 막혀있음 --> open 키워드로 상속관계를 만들 수 있음 1. 부모클래스에서 생성자를 사용하지 않을 때 fun main() { var bird = Bird() var chicken = Chicken() var sparrow = Sparrow() var pigeon = Pigeon() bird.fly() chicken.fly() sparrow.fly() pigeon.fly() } open class Bird { //open을 부모 클래스 앞에 적어주기 fun fly() { println.. 2024. 3. 5.
[Kotlin 문법 종합] - 생성자, 객체 (#비교 추가하기) @@ 질문하기! 1. 생성자 : 클래스를 실체화할 때 최초로 실행할 로직 작성 (인스턴스를 만드는 과정st... 붕어빵 틀을 가지고 붕어빵 찍어내는) 1) 기본 생성자 : 클래스 이름 옆에 생성자를 위한 인자를 입력받아 초기화 (함수와 유사) class 클래스이름1(temp:String){ var myTemp = temp } fun main(){ val ex1 = 클래스이름1("가") } 2) 명시적 생성자 (1) 주 생성자 Init : { } 초기화 블록 사용하면 객체 실행과 함께 자동실행됨 - 한 가지의 형태로 클래스를 실체화할 때 - 클래스 선언부에 생성자를 명시함 - 매개변수를 직접 넘기지 않음 @@@ 클래스 이름옆 ()에 적는 순서대로 필드의 변수가 채워지는거 맞나?? ->> 이건 다른거... 코드 정리하기 /.. 2024. 3. 5.