Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

13.polymorphism

fun main(args : Array<String>){
    var 오브젝트1 = baseClass();
    오브젝트1.func1();

    var 오브젝트2 = childClass();
    오브젝트2.func1();
    오브젝트2.func2();
    오브젝트2.func2("문자열 파라메터");
    오브젝트2.func2("문자열 파라메터", 100);
}

open class baseClass{
    // 상속받은 클래스에서 오버라이드하려면 선조클래스에서 open으로 정의.
    open var name = "base";
    open fun func1() = println(this.toString());

    // 외부사용금지 .찍고 메소드 사용못함.
    private fun onlyMyFunc() = println("클래스내부에서만 사용");
    constructor(){
        onlyMyFunc();
    }
}

class childClass : baseClass(){
    override var name = "";
    override fun func1() = println(this.toString() + " 재정의함.");
    fun func2() = println("func2");

    // overloding
    fun func2(s : String ) = println("func2:$s ");
    fun func2(s : String, num : Int ) = println("func2: $s, $num  ");

}

12.class

fun main(args : Array<String>){
    var 오브젝트1 = 클래스1();
    var 오브젝트2 = 클래스1("파라메터 받음.");

    var 오브젝트3 = 선조클래스();
    println( 오브젝트3.getMyName() );

    var 오브젝트4 = 상속클래스();
    println( 오브젝트4.getMyName() );
}

// class 이름(변수명: 데이터형, ..){} 으로 생성자를 만들어쓰기도 한다.
class 클래스1{
    var name : String = "";

    // 기본 생성자
    constructor(){
        println("기본생성자");
    }
    // 오버로딩된 생성자
    constructor(name : String ){
        this.name = name;
        println("$name 을 입력받은 생성자");
    }
}

// kotlin에서는 기본적으로 상속이 거부되어 있다. 그래서 선조클래스를 open으로 지정해야 한다.
open class 선조클래스 {
    var name : String = this.toString();
    fun getMyName() : String = name;
}

//  상속받을 떄는 선조클래스를 "class 이름 : 선조클래스명(생성자인자){}" 형식으로 해야 한다.
class 상속클래스 : 선조클래스(){

}

11.collections

fun main(args : Array<String>){
    // 읽기전용 -  list. 데이터형을 마구 섞어도 된다.
    val 리스트 = listOf(1, "헉", 3.00f, true);
    for (i in 0 .. 리스트.size - 1){
        println ( 리스트.get(i).toString() ) ;
    }

    // 수정가능 - List. 데이터형을 미리 정해야 하는 듯.
    println("__________")
    var 수정가능리스트 = mutableListOf<String>();

    // add 메소드로 추가
    수정가능리스트.add("나는야");
    수정가능리스트.add("우주의");
    수정가능리스트.add("판타지");
    수정가능리스트.add("이박사");

    for(s in 수정가능리스트){
        println(s)
    }

    println("__________")

    // remove 메소드로 삭제
    수정가능리스트.removeAt(0);
    for(s in 수정가능리스트){
        println(s)
    }

    println("__________")

    // Map: java보다 불편한 듯.
    var 맵 = hashMapOf("고양이" to 1, "강아지" to 2);
    println(맵["고양이"]);

}

8.any_type

fun main(args : Array <String>){
    // any는 C에서 void*와 같은 역할을 하는 듯.
    // 어떠한 데이터 형의 변수이던간에 담을 수 있는 크기.
    var 뭐던 : Any;

    뭐던 = 1;
    뭐던 = "문자열";
    뭐던 = 111.01010;
    뭐던 = 10.00f;

    // is와 !(not) 연산자로 어떤 데이터 형인지 채크가 가능함.
    if(뭐던 !is String) {

        if (뭐던 is Float) {
            println("float입니다");
        }

    }

}

6.DataType_string

import java.util.*

/**
 * Created by snake on 17. 5. 21.
 */
fun main(args : Array<String>){

    var sName = "문자열 테스트입니다. ";

    // 1.문자열을 추가하는 것은 + 연산자로 가능함 <- Java와 동일
    println (sName + " : 문자열 붙이기");

    // 2. """ 이 안에 줄넘김 문자열이 들어갈 수 있다. """
    // Python에 이런 기능이 있다.
    var s줄넘김문자열 = """
    어떻게 출력 될지..
모르겠지만
    마치 HTML의 <pre>와 비슷할....
            듯
    """
    println(s줄넘김문자열);

    // 3. 문자열 내의 포멧팅 방법
    // linux의 bash와 비슷함.

    var s포멧문자열 = "sName의 값을 가져오는 것: $sName";
    println(s포멧문자열);

    // 4. linux bash와 비슷하니
    // ${}안에
    // 함수호출이나 수식처리도 가능함.
    var s포멧문자열2 = "sName의 값을 가져오는 것: ${sName + "움하하하" + Date()}"; // Java class도 가져욜 수 있음.
    println(s포멧문자열2);

}

3.variable_null

fun main(args : Array<String>){
    // null 채크를 좀 심하게 하는 언어같음.
    // null을 넣는다고 다 들어가지 않음.
    // 변수기본이 null을 대입할 수 없음.
    // 아무래도 null처리로 인한 버그가 많으므로
    // kotlin이라는 언어는 그것을 강하게 제어하겠다는 의지로 보임.

    var number : Int? = 10;
    number = null;

    // 사용법: data형 끝에 ?를 붙인다.
}

Iop2323488293

fun main(args: Array<String>) {
    println("Hello, World!")
}

asdasd

fun main(args: Array<String>) {
    println("Hello, World!")
}

16.newstyle_function

fun main(args : Array<String> ){

    // let()
    // 결과를 { -> } 안으로 넘긴다. 그 안에서 이미 선언한 변수처럼 사용한다.
    // ->를 삭제하면 기본변수인 it로 인식한다.
    숫자값리턴().let { 넘겨준값 -> println (넘겨준값) };
    숫자값리턴().let {  println ( it ) };

    // apply()
    // 파스칼의 with문과 유사함. [객체이름.뭐뭐머] 코딩하는 고생이 덜었음.
    var 나는객체 = 테스트클래스().apply { sName = "동작구 스눕독"; nAge = 39; }
    나는객체.나를말한다();

    // run()
    // 순서대로 실행. 결과가 적용됨. apply와 차이점은 모르겠음.
    // apply는 생성되는 경우에도 가능하고 run은 이미 생성된 것에만
    // 가능한다는 글을 읽었음.
    나는객체.run { sName = "동작구 에미넴"; 나이를한살더먹다(); }
    나는객체.나를말한다();

}

fun 숫자값리턴() = 10;

class 테스트클래스{
    var sName   : String = "";
    var nAge    : Int    = 49;
    fun 나를말한다() = println("이름은 \"$sName\"이고 나이는 $nAge 입니다. ");
    fun 나이를한살더먹다() = nAge++;
}

18.trycatch

fun main(args : Array<String>){
    // java와 흡사하다.
    try{
        13 / 0;
    } catch(e: Exception){
        println(e);
    } finally {
        println("마지막 수행.")
    }
}

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.