JAVA/코드

2022_10_13 연습 01 day08.poly.instanceof_

0304호 2022. 10. 13.

객체의 모형을 확인하는 방법

Instanceof

 클래스 타입 확인용
 변수 instanceof 클래스;

boolean형으로 리턴
  거의 안씀

package day08.poly.instanceof_;

public class MainClass {
	
	public static void main(String[] args) {
		
		//instanceof = 객체의 모형을 확인
		
		Person s = new Student("홍길동", 10, "1234");
		Person t = new Teacher("이순신", 20, "프로그램");
		casting(t);
		
	}
	public static void casting(Person p) {
		if(p instanceof Student) {		//p가 student라면 true, 아니면 false
			Student s = (Student)p;
			System.out.println( s.info() );
					
		}else if(p instanceof Teacher) {
			Teacher t = (Teacher)p;
			System.out.println( t.info() );
		}
	}
}
package day08.poly.instanceof_;

public class Person {
	
	String name;
	int age;
		
	Person(String name){
		this(name,1);
	}
	
	Person(String name, int age){
		super();
		this.name = name.toUpperCase();
		this.age = age;
	}
	String info() {
		return "이름 : " + name + ", 나이 : " + age;
	}
	

}
package day08.poly.instanceof_;

public class Teacher extends Person {
	
	String subject;
	
	Teacher(String name, int age, String subject){
		super(name,age);
		this.name = name;
		this.age = age;
		this.subject = subject;
	}

	String info() {
		return super.info() + ", 과목 : " + subject;
	}
	

}
package day08.poly.instanceof_;

public class Student extends Person {

	String studentId;
	
	Student(String name, int age, String studentId){
		super(name,age);
//		this.name = name;
//		this.age = age;
		this.studentId = studentId;
	}
	
	String info() {
		return super.info() + ", 학번 : " + studentId;
	}
	
}​
package day08.poly.instanceof_;

public class Employee extends Person {
	
	String department;
	
	Employee(String name, int age, String department){
		super(name,age);
//		super();
//		this.name = name;
//		this.age = age;
		this.department = department;
	}
	
	String info() {
		//super.메서드 () = 오버라이딩된 메서드에서 부모님의 원형 메서드가 필요할때 사용
		return super.info() + ", 부서 : " + department ;
	}
	

}

댓글