개발노트/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()

}

같이 '추상 메소드'의 형태로 존재함.
최근에는 추상 메소드의 형태와는 다르게 존재할 수 있지만, 추상 메소드의 형태로 작성하도록 하는 습관을 가지는 것이 좋음.