목록Programming language (59)
For Programmer
안드로이드를 개발하면서 제네릭을 사용하는 경우는 흔치않다. 하지만 안드로이드 개발할 때 사용하는 메서드들을 보면 웬만하면 다 제네릭으로 구현되어 있다. 따라서 제네릭으로 구현된 코드를 읽을 수 있어야 한다. 간단한 제네릭 사용법이다. //제너릭을 사용하지 않은 경우 //형 변환을 해줘야 한다. val list1 = listOf(1, 2, "가") val b: String = list1[2].toString() //형변환(타입변환) //제너릭을 사용하는 경우 val list2 = listOf("a", "b", "c") val c: String = list2[2] //String이라는것을 보장받는다. //제너릭을 사용하지 않은 경우 val list5 = listOf(1, 2, 3, "가") // -> Any..
코틀린의 interface는 자바와 비슷하다. interface Person2 { fun eat() } interface 를 구현할 때는 [클래스: 인터페이스] 형식으로 구현하며 extends(확장)과 implements(구현) 둘 다 :(콜론) 으로 구현한다. 코틀린은 자바와 똑같이 1개의 상속과 여러개의 인터페이스를 구현할 수 있다. 그리고 override 변경자를 사용해서 자바의 @Override 를 대신한다. 만약에 override 된 함수 이름과 다른 함수 이름이 중복될경우 둘중 하나는 다른 이름을 사용해야 한다. 코틀린은 또한 default메소드를 제공하고 있다. 이는 인터페이스 내부에서 구현할 수 있게 해주며 반드시 상속받은 클래스에서 구현할 필요가 없다. interface Person2 {..
상속은 클래스의 기능을 확장하고자 할때 현재의 클래스의 기능을 모두 가지고 자신만의 기능이 추가된 새로운 클래스를 정의 하는 방법이다. 따라서 상속을 하게 되면 클래스가 상, 하의 계층구조를 가지게 되고 또 상속을 여러 단계로 할 수 있다. 코틀린에서 모든 클래스는 공통의 상위클래스(superclass)로 Any 클래스를 가진다. 이것이 클래스에 상위 클래스를 선언하지 않을때 가지는 기본 상위 클래스인데 다음 코드를 보면 class Good // 암시적으로 Any로 부터 상속 받음 Any 클래스 부터 모드 상속을 받고 있다고 생각하면 된다. 그래서 실제로 클래스를 만들고 ctrl+enter 를 눌러보면 Any클래스로부터 오버라이드 할 수 있는 함수 3가지가 존재한다. class ParentCar{ ove..
코틀린 내부에 변수는 간단히 전역변수와 지역변수가 있다. 전역변수는 파일내부의 전역변수와 클래스 내부의 전역변수로 나눌 수 있다. 다음 코드를 보자 var number100:Int = 10 //파일내부의 전역변수 fun main(args:Array){ } class Reward(name:String){ var name : String = name // 클래스 내부에서의 전역변수 fun fun0(name:String){ var fun0Name = name //fun0함수에서의 지역변수 } fun fun1(string: String){ name = string // 클래수 내부의 name전역변수에 접근가능하다. number100 = 10 //파일 내부의 전역 변수에 접근 가능하다. fun0Name = "go..
Java에서는 setter와 getter를 생성하기위해 엄청나게 많은 코드가 필요하다. 예를들어 보면 public class Person { private String name; // constructor public Person(String name){ this.name = name; } // get method get set method public String getName() { return this.name; } // set method public void setName(String name){ this.name = name; } } 다음과 같이 name private 변수하나에 20줄 가까이 코드가 나오게 된다. 하지만 위의 코드를 코틀린은 구현하면 한줄 안에 해결 할 수 있다. class ..
객체 지향 프로그래밍이란 무엇일까? 그렇다면 우선 객체란 무엇일까? 정답은 이름이 있는 모든 것이다. 이렇게 말로 들으면 생소하지만 객체지향형 공부를 조금이라도 해보면 어떤 느낌인지 대강 알 수 있다. 절차지향프로그래밍은 간단히 얘기해서 코드를 위에서 아래로 실행하면 문제가 해결된다고 생각해보자. 하지만 축구경기를 하기위해 축구경기1,축구경기2 ... 등등을 만들어야 한다고 생각해보자. 절차지향형 프로그래밍에서는 축구경기1,축구경기2 마다 일일이 장황한 코드를 작성해야 한다.(선수생성,심판생성,경기장생성 등등..) 그렇다면 객체지향형 프로그래밍은 이걸 어떻게 해결할 수 있을 까? 축구경기1을 위해서 선수,심판,경기장,관중을 생성해놨다고 하자. 그러면 우리는 축구경기2를 만들기위해 또 장황한 코드를 작성해..
코틀린에서도 for문과 비슷한 기능을 제공하는 while문이 있다. for문과 while문은 코딩을 많이 하다 보면 while문을 썻을때 더 깔끔하거나 for문을 썻을때 더 깔끔할 때가 존재하기 때문에 구분하여 잘 사용하면 된다. 1. while문 var a: Int = 0 var b: Int = 4 while(a
코틀린에서 for문을 이용하여 반복할 수 있는 방법은 아주 많다. 그중 몇가지만 사용해 보고자 한다. List 선언 val a = mutableListOf(1,2,3,4,5,6,7,8,9) for 방법 1 //반복하는 방법(1) for ( item in a ){ print(""+item+" ") //1 2 3 4 5 6 7 8 9 출력 } -> a의 원소들이 차례대로 item에 들어간다고 생각 for 방법 2 //반복하는 방법(2) for( (index,item) in a.withIndex()){ //index와 item에 각각 index와 value값 들어감 println("index: " + index + " item: "+item) } 출력 //index: 0 item: 1 //index: 1 it..