<Animal.java> - 최상위 클래스
public class Animal {
public void cry() {
}
public void sing() {
}
}
<Cat.java> - Animal 클래스를 상속받음
public class Cat extends Animal{
@Override
public void cry() {
System.out.println("야옹~");
}
}
<Dog.java> - Animal 클래스를 상속받음
public class Dog extends Animal{
@Override
public void cry() {
System.out.println("멍멍!");
}
}
<main.java>
import kr.or.ddit.util.ScanUtil;
public class AniMain {
public static void main(String[] args) {
System.out.println("1.고양이");
System.out.println("2. 강아지");
int sel = ScanUtil.nextInt("선택: ");
if(sel == 1)
{
Cat cat = new Cat();
cat.cry();
}
if(sel ==2)
{
Dog dog = new Dog();
dog.cry();
}
}
}
이런 식으로 해도 되지만,
만약 알고리즘이 복잡해지게 되면 중복되는 코드가 너무 많아지기때문에
다형성을 이용하여 사용하는 것이 가장 좋습니다.
- 다형성 이용해서 하는 방법
import kr.or.ddit.util.ScanUtil;
public class AniMain {
public static void main(String[] args) {
System.out.println("1.고양이");
System.out.println("2. 강아지");
int sel = ScanUtil.nextInt("선택: ");
Animal ani= null;
if(sel == 1)
{
ani = new Cat();
}
if(sel ==2)
{
ani = new Dog();
}
ani.cry();
}
}
만약 1을 선택하면 ani에 cat이 들어가고, 2를 선택하면 ani에 dog가 들어갑니다.
이런 것을 다형성이라고 하는데,
다형성은 기본적으로 오버라이딩을 해줘야합니다.
위 예제코드처럼 부모 클래스에 자식 클래스를 담을 때는 타입이 자동으로 변환되지만,
부모 클래스에 자식클래스를 담을 때는 아래와같이 강제로 형변환해줘야합니다.
Cat cat = (Cat)ani;
'자바' 카테고리의 다른 글
인터페이스 (2) | 2024.07.24 |
---|---|
추상 클래스 (0) | 2024.07.23 |
ValueObject (0) | 2024.07.22 |
lombok.jar (0) | 2024.07.22 |
싱글톤 (1) | 2024.07.19 |