필드의 다형성, instanceof

2019. 3. 8. 19:23JAVA

---------------------------필드의 다형성----------------------------


public class TireApp4 {

public static void main(String[] args){

Tire t1 = new KumhoSnowTire();

SnowTire t2 = (SnowTire)t1;



t1.go();

// t1.chain();

// t1.push();

((SnowTire)t1).chain();

t2.go();

t2.chain();

((KumhoSnowTire)t2).push(); // 강제 형변환

}

}



위에처럼 (())에 담아서 할경우 상속된 메소드뿐만 아니라 형변환한 클래스의 메소드를 사용할 수 있다.




----------------------------instanceof----------------------------------------


지금 바라보는 객체에 그 포함이 된건지 비교하는것

강제 형변환과 같이 사용된다.




객체 instanceof 클래스

Tire t = new SnowTire();


t instanceof Tire <---- t가 바라보는객체가 Tire종류인가요?

//Tire객체가 포함되어 있다. Tire로 강제형변환 가능

t instanceof SnowTire <--- t가 바라보는 객체가 SnowTire류 인가요?

//SnowTire객체가 포함되어 있다. SnowTire로 강제형변환 가능


t instanceof KumbosonwTire <--- t가 바라보는 객체가 KumhoSnowTIre류 인가요?

//KumhoSnowTire객체가 없다. KumhoSnowTire로 강제형변환 불가능.

*/

Tire t = new SnowTire();


System.out.println("t1은 Tire류 인가요? "+ (t instanceof Tire));

System.out.println("t1은 SnowTire 류인사요? "+(t instanceof SnowTire));

System.out.println("t1은 KumhoSnowTire류 인가요?" +(t instanceof KumhoSnowTire));

=======================================================================

결과


---------- 실행 ----------

t1은 Tire류 인가요? true

t1은 SnowTire 류인사요? true

t1은 KumhoSnowTire류 인가요?false


출력 완료 (0초 경과) - 정상 종료







---------------------상속, 의존, 포함, 구현관계, 집합관계-----------------------



의존관계 -- 예시) 자동차 --> 바퀴

(의존)


포함관계 -- student와 score 클래스를 만들어 score를 student 안에 넣으면 포함관계

public class Student{

private int no;

private String name;

private Score score;