개발노트/Kotlin
내일배움캠프 2주차 2일 코틀린 기초
시계속세상은아직돌아가는중
2023. 7. 18. 20:02
1. 메소드와 클래스,그리고 생성자
fun method(변수 : 자료형,...): 반환자료형
{
Code
}
class ClassName{
Code
}
메소드 : 소스코드에 이름을 붙이는 함수.
클래스 : 함수와 데이터가 저장되는, 변수까지 모두 관리하고 재사용할 수 있게 만들어줌. 객체는 메소드의 인스턴스
!!! 클래스의 이름은 대문자로 시작해야함
주생성자
fun main(){
}
class In(변수:자료형....){
code
init{
code
}
code
}
부 생성자
fun main()
{
}
clann con{
code
constructor(변수 : 자료형....){
code
}
constructor(변수 : 자료형....){
code
}
code
}
주생성자 | 부생성자 |
클래스 선언부분에 직접 선언 | 클래스의 별도 선언 |
클래스의 변수를 선언하고 초기화함 | 초기화를 담당하지 않음. |
여러개를 가질 수 있음 |
2. 상속,오버라이딩,오버로딩,인터페이스
상속의 형태
fun main()
{
var x = child()
x.fly()
open class Parent {
fun fly() {
// 코드
}
}
class Child : Parent() {
}
fun main() {
val x = Child()
x.fly()
}
오버라이딩의 형태
fin main(){
var x = child("")
x.fly()
}
open class Parent(name:string){
code
open fun fly(){
println("a")
}
}
class child(변수 : 자료형) : Parent(){
code
override fun fly(){
//super.fly()
code
}
상속,오버라이드 모두 open class를 선언함으로써 가져올 수 있으며
오버리아드의 super.fly()는 기본적인 오버라이드 양식이다.
super.fly()가 해당 코드에서 주석처리가 되지 않는다면,
'println("a")"가 포함된 값이 출력될 것 이다.
해당 값을 주석처리하면 수정된 코드만 출력할 수 있다.
오버로딩의 형태
fun main(){
code
}
class overloading{
fun add(value : int){
code
}
fun add(value: double){
code
}
fin add(value : int, value2 : int)
{
code
}
메소드의 이름이 같아도 변수의 갯수 혹은 자료형이 다르다면, 같은 이름의 변수를 선언할 수 있다.
인터페이스는 추상화 메소드의 집합임.
클래스 상속하게 되면 모든 부모의 변수를 사용할 수 있음. 부모 클래스의 변수가 10개가 있다고 할 때 자식 클래스에서 하나만 필요하다면, 9개의 변수는 버려지게됨. 인터페이스로 선언한다면 버려지지 않게 하나만 사용할 수 있다.
인터페이스는 성격을 따를 필요가 없음.
인터페이스는 별개의 외부 기능으로써 들어감.
interface Waterr {
fun swim()
}
같이 '추상 메소드'의 형태로 존재함.
최근에는 추상 메소드의 형태와는 다르게 존재할 수 있지만, 추상 메소드의 형태로 작성하도록 하는 습관을 가지는 것이 좋음.