본문 바로가기
  • 개발하는 곰돌이

java38

Kotlin 기본 문법 9 : Kotlin의 다양한 클래스(Data Class, Enum Class, Sealed Class) 목차 개요 Kotlin에는 기본적인 클래스, 추상 클래스, 인터페이스 외에도 Data Class, Enum Class, Sealed Class가 존재한다. 물론 Enum Class는 Java에도 존재하는 개념이지만 Data Class와 Sealed Class는 Java에는 존재하지 않는 Kotlin만의 특별한 클래스이다. 이번 포스트에서는 이러한 Kotlin의 특별한 클래스에 대해 정리한다. Data Class Data Class는 주로 DB를 다루는 앱을 개발할 때 각 DTO(Data Transfer Object)나 VO(Value Object)를 작성할 때 사용할 수 있는 특수한 클래스이다. Java에서 DTO나 VO를 작성할 때 getter, setter를 비롯하여 equals(), hashCode.. 2022. 12. 16.
Kotlin 기본 문법 8 : 정적 변수와 정적 메소드(feat. companion object) 목차 개요 정적 변수와 정적 메소드는 클래스에 고정된 채로 프로그램이 실행될 때 클래스와 함께 메모리에 적재되어 객체를 생성하지 않고 호출할 수 있는 변수와 메소드를 의미한다. 이러한 정적 변수와 정적 메소드는 해당 클래스의 모든 객체가 공유하여 어디서든 참조가 가능하다. 이 포스트에서는 Kotlin에서 정적 변수와 정적 메소드를 선언하고 다루는 방법에 대해 정리한다. Kotlin에는 static 키워드가 없다 Java에서는 클래스 내부의 변수나 메소드 앞에 static을 붙이기만 하면 정적 변수나 정적 메소드로 선언할 수 있다. 하지만 Kotlin에서는 static이 존재하지 않고 다른 두 가지 방법으로 정적 변수와 정적 메소드를 작성할 수 있다. companion object Kotlin에서 정적 변.. 2022. 12. 14.
오버로딩(Overloading) vs 오버라이딩(Overriding) 개요 Java와 Kotlin에서는 다형성을 위해 메소드의 오버로딩과 오버라이딩이 가능하다. 이 두 개념은 전혀 다른 개념이지만 용어가 비슷하기 때문에 잘 구분하는 것이 좋다. 오버로딩(Overloading) : 메소드의 파라미터 개수나 타입을 다르게 하여 같은 이름의 메소드를 여러 개 작성하는 방법 오버라이딩(Overriding) : 부모 클래스의 메소드를 자식 클래스에서 재정의 또는 구현하여 사용하는 방법 메소드의 오버로딩 오버로딩(Overloading). 단어 의미 그대로 해석하자면 과적재라는 뜻이다. 쉽게 생각하면 원래 하나의 메소드는 하나의 기능을 수행해야 하지만 파라미터의 개수나 타입만 다르고 수행하는 동작이 비슷할 경우에는 이 메소드의 이름을 그대로 사용하여 여러 파라미터에 대한 동작이 과적재.. 2022. 12. 13.
Kotlin 기본 문법 7 : 추상 클래스/인터페이스와 클래스의 상속 목차 개요 Kotlin도 Java와 마찬가지로 추상 클래스와 인터페이스가 존재하고 클래스에서 다른 클래스를 상속하거나 인터페이스를 구현할 수 있다. 이번 포스트에서는 Kotlin의 추상 클래스/인터페이스와 클래스의 상속에 대해 정리한다. Kotlin의 추상 클래스 Kotlin의 추상 클래스는 Java와 마찬가지로 abstract class 키워드를 사용하여 작성한다. 추상 클래스를 작성하는 방법은 일반적인 클래스를 작성하는 것과 동일하게 작성하고 class 대신 abstract class를 사용하면 된다. 클래스를 작성하는 기본적인 방법을 제외하면 Java와 같다. // Java abstract class Animal { String name; public Animal(String name) { this.. 2022. 12. 13.
Kotlin에서 두 객체의 비교(CompareTo) 개요 Java에서는 두 객체를 비교하려면 Comparable 인터페이스의 CompareTo() 메소드를 구현하여 객체를 비교해야 했다. Kotlin에서도 마찬가지로 두 객체를 비교하려면 Comparable 인터페이스의 CompareTo() 메소드를 구현해야 하는것은 동일하지만 이 과정만 수행해놓으면 훨씬 직관적으로 두 객체를 비교할 수 있다. 이에 대해 알아보도록 하자. Comparable 인터페이스의 CompareTo() 메소드는 현재 객체와 파라미터로 받은 객체 사이의 특정 연산을 통해 결과가 양수이면 현재 객체가 더 크고, 결과가 음수이면 현재 객체가 더 작다고 판별한다. Java에서의 두 객체 비교 Java에서 두 객체를 비교하려면 객체의 클래스에서 Comparable 인터페이스의 CompareT.. 2022. 12. 9.
Kotlin에서 한 줄로 받은 입력을 여러개의 변수에 할당하는 방법(구조 분해) Java에서는 한 줄로 받은 입력을 여러개의 변수에 할당하려면 Scanner 클래스의 next()로 변수마다 하나씩 할당해주거나 BufferedReader 클래스의 readLine()으로 한 줄을 입력받은 후 split()이나 StringTokenizer로 입력을 분할하여 하나씩 할당해줘야 했다. 하지만 Kotlin에서는 똑같이 한 줄로 입력을 받았을 때, 최대 5개까지의 변수를 한 줄의 코드로 할당할 수 있다. Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int d = sc.nextInt(); int e = sc.nextInt(); BufferedReader br .. 2022. 12. 8.
Kotlin 기본 문법 6 : 클래스와 접근 지정자 목차 개요 Kotlin은 JVM 기반이면서 객체지향 프로그래밍을 추구하는 언어인 만큼 클래스를 통해 객체를 생성하여 사용한다. 클래스와 객체의 차이는 아래와 같다. 클래스 : 객체들의 공통된 특성을 정의해놓은 틀 객체 : 클래스를 이용하여 생성하여 각자의 속성을 가진 개체 클래스와 객체의 예를 들면 다음과 같다. 자동차라는 클래스가 있으면 차종, 자동차번호 등은 모든 자동차가 공통적으로 갖는 특성이다. 이렇게 공통적으로 갖는 특징적인 값을 필드(field)라고 한다. 또한 모든 자동차는 운행, 세차 등의 행위를 할 수 있는데, 이렇게 공통적으로 갖는 동작 행위를 메소드(method)라고 한다. 이러한 자동차라는 클래스로 차종, 자동차번호 등의 각각의 필드값을 갖는 개체가 바로 객체가 된다. Kotlin은.. 2022. 12. 2.
[Kotlin/Java] 소수 찾기와 에라토스테네스의 체 소수를 판별하는 기본적인 방법 소수(prime number, 素數)는 1과 자기 자신만으로 나누어 떨어지는 1보다 큰 자연수를 의미한다. 예를 들면 2, 3, 5, 7 ... 등이 있다. 어떤 수 \(x\)가 주어졌을 때 \(x\)가 소수인지 판별하는 가장 간단한 방법은 2부터 \(x-1\)까지 모든 수로 \(x\)를 나누었을 때 나누어 떨어지는 수가 있는지 확인하는 것이다. // Kotlin fun isPrime(x: Int): Boolean { for (i in 2 until x) {// 2부터 x-1까지 반복 if (x % i == 0) return false// x가 한 번이라도 나누어 떨어지면 소수가 아님 } return true// 모두 반복해도 나누어 떨어지지 않으면 소수 } // Java .. 2022. 11. 29.