[Java]::Remind - Polymorphism

Gentlee's Self-Study Log·2023년 5월 4일
0

Java Reminder

목록 보기
7/19
post-thumbnail

Polymorphism - 다형성

다형성

* 다형성은 참조 변수의 타입을 자신 또는 상속받는 상위 타입으로 선언하는 것을 의미한다.

다형성의 원리

  • 다형성이 가능한 이유는 객체 생성 시 실제 상속받는 객체가 메모리에 생성된다.
  • java.lang.Object 객체는 모든 자바 클래스의 상위 객체이기 때문에 모든 참조 변수는 Object 타입으로 선언될 수 있다.

Example code

Salesman, Manager, Director 클래스는 Employee클래스를 상속받는다.

abstract class Employees extends Object{

	String name;
	int salary;

	public abstract void calcSalary();

	public abstract void calcBonus();
	
}

다형성의 필요성

다형성을 적용하여 매개변수의 타입을 선언한 메서드는 자신뿐만 아니라 모든 하위 객체를 인자값으로 전달받아 실행할 수 있기 때문에 하나의 메소드로만 기능 구현이 가능하다.

다형성의 활용

  • 다형성이 적용된 참조 변수의 타입을 판별하기 위해서는 instanceof 연산자를 사용한다.
  • 상위 타입으로 선언된 참조변수는 상위 객체의 내용만 접근할 수 있기 때문에 원래의 타입으로 변환한 후 사용해야한다.

Example code

public void calcSalary(Employee e) {
			if(e instanceof Salesman) { 
            
            //SalesMan이라면
            
            	Salesman s = (Salesman) e;
				s.annual_salary = 65000;
				System.out.println("Salesman 입니다.");
                
			}else if(e instanceof Manager) { 
            
            //Manager라면
            	
                Manager m = (Manager) e;
				m.num_team = 10;
				System.out.println("Manager 입니다.");
                
			}else if(e instanceof Director) { 
            
            //Director라면
            
            	Director d = (Director) e;
				d.num_project = 5;
				System.out.println("Director 입니다.");
                
			}
		};
profile
https://github.com/SamGentlee

0개의 댓글