추상 클래스

Animal
Java
public abstract class JavaAnimal {
protected final String species;
protected final int legCount;
public JavaAnimal(String species, int legCount) {
this.species = species;
this.legCount = legCount;
}
abstract public void move();
public String getSpecies() {
return species;
}
public int getLegCount() {
return legCount;
}
Kotlin
abstract class Animal(
protected val species: String,
protected **open** val legCount: Int,
) {
abstract fun move()
}
- 추상 프로퍼티가 아니라면 상속받을 때 open 키워들 붙여야 한다.
Cat
Java
public class JavaCat extends JavaAnimal {
public JavaCat(String speceis) {
super(species, 4);
}
@Override
public void move(){
System.out.println("cat move");
}
}
Kotlin
class Cat(
species: String
) : Animal(species, 4) {
override fun move() {
println("cat move")
}
}
- extends 키워드를 사용하지 않고 : 을 사용한다.
- 상위클래스의 생성자를 바로 호출함
- override 키워드를 필수적으로 붙여줘야 함
Penguin
Java