Daily coding
Java Basic : day 9 - Inheritance 상속 4 : 예시 본문
상속 예시
// 부모클래스
public class StarCarft {
// 목숨
public void life() {
System.out.println("StarCraft life");
}
}
// 자식1 : Tank
public class Tank extends StarCarft {
// 오버라이딩
public void life() {
System.out.println("Tank life");
}
public void canon() {
System.out.println("Tank canon");
}
}
// 자식2 : Marin
public class Marin extends StarCarft {
// 오버라이딩
public void life() {
System.out.println("Marin life");
}
public void run() {
System.out.println("Marin run.");
}
}
// 자식3 : Race
public class Race extends StarCarft {
// 오버라이딩
public void life() {
System.out.println("Race life");
}
public void fly() {
System.out.println("Race fly.");
}
}
public class mainClass {
public static void main(String[] args) {
// 유닛을 n개 받아야하는 경우
// 총 n개 중 몇 개의 종족을 선택할 지 사용자에게 달려있다.
// 따라서, 부모 클래스로 배열을 잡고 동적할당은 종족별로 받도록 한다.
// 잘못된 방법 (비효율적)
// Marin m[] = new Marin[10];
// 아래 코드처럼 만들면
// 다양한 자식 클래스를 무작위로 만들 수 있다.
StarCarft starArr[] = new StarCarft[5];
starArr[0] = new Marin();
starArr[1] = new Tank();
starArr[2] = new Race();
starArr[3] = new Marin();
starArr[4] = new Race();
// Override 메소드 보기
for (int i = 0; i < starArr.length; i++) {
starArr[i].life();
}
// 각각에 맞는 메소드가 호출 된다.
instanceOf
: 객체를 판별하는 예약어
for (int i = 0; i < starArr.length; i++) {
if(starArr[i] instanceof Marin) { // Marin 클래스인지 확인하기
Marin ma = (Marin) starArr[i]; // Marin 클래스의 독자적인 메소드 사용하기 위해 형변환
ma.run(); // Marin 클래스에만 정의된 메소드 확인
}else if (starArr[i] instanceof Race) {
Race ra = (Race) starArr[i];
ra.fly();
}else if (starArr[i] instanceof Tank) {
Tank ta = (Tank) starArr[i];
ta.canon();
}
}
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 9 - Example : 회원관리DAO (회원정보 입출력 / 파일저장,읽기) (0) | 2019.11.29 |
---|---|
Java Basic : day 9 - Final (0) | 2019.11.29 |
Java Basic : day 9 - Inheritance 상속 3 - Overriding 오버라이딩 (0) | 2019.11.29 |
Java Basic : day 9 - Inheritance 상속 2 - super 참조 (0) | 2019.11.29 |
Java Basic : day 9 - Inheritance 상속 1 - extends 예약어, 접근제어자, super (0) | 2019.11.29 |