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.
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 ");
}
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 상속클래스 : 선조클래스(){
}
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입니다");
}
}
}
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);
}
fun main(args : Array<String>){
// null 채크를 좀 심하게 하는 언어같음.
// null을 넣는다고 다 들어가지 않음.
// 변수기본이 null을 대입할 수 없음.
// 아무래도 null처리로 인한 버그가 많으므로
// kotlin이라는 언어는 그것을 강하게 제어하겠다는 의지로 보임.
var number : Int? = 10;
number = null;
// 사용법: data형 끝에 ?를 붙인다.
}
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++;
}