Animal이란 추상클래스
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;
}
}
abstract class Animal(
protected val species: String,
protected open val legCount: Int
) {
abstract fun move()
}
Animal을 상속한 Cat클래스
public class JavaCat extends JavaAnimal{
public JavaCat(String species, int legCount) {
super(species, 4);
}
@Override
public void move() {
System.out.println("고양이가 사뿐사뿐 걸어가~");
}
}
class Cat(species: String): Animal(species, 4) {
override fun move() {
println("고양이가 사뿐사뿐 걸어가~")
}
}
Animal을 상속한 Penguin클래스
public class JavaPenguin extends JavaAnimal{
private final int wingCount;
public JavaPenguin(String species) {
super(species, 2);
this.wingCount = 2;
}
@Override
public void move() {
System.out.println("펭귄이 움직입니다~ 펭펭");
}
@Override
public int getLegCount() {
return super.legCount + this.wingCount;
}
}
class Penguin(species: String): Animal(species, 2) {
private val wingCount: Int = 2
override fun move() {
println("펭귄이 움직입니다~ 펭펭")
}
override val legCount: Int
get() = super.legCount + this.wingCount
}