1) 프로퍼티
만 가지고 있는 클래스
2) 기본 생성자
에 1개 이상의 매개변수
가 변수나 상수로 존재함
3) 유용한 매소드를 자동으로 생성함
- hashCode()
: 객체를 구분하기 위한 고유값을 리턴해줌
- eauals()
: 동일한 객체인지 비교해서 true 또는 false를 리턴해줌
- copy()
: 현재 객체의 모든 정보를 복사해서 새로운 객체를 리턴해줌
- toString()
: 현재 객체의 모든 정보(프로퍼티)를 예쁘게 출려해줌
- getXXX()/setXXX(매겨변수)
: 변수의 값을 리턴하거나 설정해줌
ex) data class 클래스이름 {
정보1
정보2
}
1) 상속
과 관련된 개념
2) 상속받을 수 있는 자식클래스를 미리 정의 -> 무분별한 상속 방지
3) 컴파일 시점에 생성할 수 있는 자식을 알 수 있어 효율적으로 다형성을 구현
ex) sealed class 부모클래스 {
class 자식클래스1 : 부모클래스생성자
class 자식클래스2 : 부모클래스생성자
}
1) 프로그램을 실행하는 동시에 인스턴스화 -> 객체명으로 매소드 사용
1) 생략 or nit() {}
2) 생성자가 단 1개
만 만들어짐 -> 이 생성자가 받는 매개변수만 사용 가능
1) constructor() {}
2) 여러 개
의 생성자를 만들어, 클래스 호출 시 원하는 생성자를 선택할 수 있음
3) 매개변수의 개수와 자료형
으로 구분됨
두 생성자의 차이?
-> 클래스가 넘겨받는 인자의 차이
1) 다른 언어들과 달리 생략된 final
키워드로 기본적으로 상속을 막아둠 -> 무분별한 상속 방지
2) open
키워드를 활용
1) 코틀린은 OOP언어이고 OOP 관점
을 지향함
2) 일관성을 유지하여 재사용과 유지보수의 효율
3) 단축키 : Ctr + O (Windows)
/ Cmd + O (Mac)
1) 매개변수의 개수와 자료형
으로 구분, 반환타입은 x
2) 합을 구하는 add매소드에서 정수, 실수 모두 관리하고 싶음 -> 오버로딩 사용
2) 왜 필요한가? -> 유지보수
1) 코틀린은 반드시 1개의 부모 클래스
만을 가짐 -> 가장 근본적인 특성만 상속해야함
2) 추가적인 기능들을 인터페이스
로 추가 가능
3) 추상 메소드만 작성하는게 원칙이지만, 최근에는 아니어도 됨
아주 유익한 내용이네요!