Java 다형성
Java의 다형성(Polymorphism)
- 코드의 재사용성을 높이기 위한 기술
- 이러한 재사용성이 높아지면 개발자의 편의가 높아지고 유지보수에 편의성이 증대한다.
- 또한, 한가지 기능을 각 개발자가 필요로 하는 용도와 목적에 맞게 커스터마이징 가능하다.
- 즉, 같은 행위를 하지만 용도와 목적에 부합하여 다양한 기능수행과 처리 결과를 이룰수 있게 하는 것이 다형성
Java의 대표적인 다형성 개념
- 오버로딩(Overloading)
- 하나의 클래스 안에서 같은 이름의 메소드를 사용하지만 각 메소드마다 다른 용도로 사용되며 그 결과물도 다르게 구현 가능
- 오버로딩을 위해 오버로딩 하는 메소드간에 이름은 같지만 매개변수의 갯수나 데이터 타입은 달라야 한다.
- 대표적으로 클래스 내의 생성자 만들 때 오버로딩으로 다양한 객체 초기화 방법 제공
- 오버라이딩(Overriding)
- 부모클래스에서 상속받은 자식클래스에서 부모클래스에서 만들어진 메소드를 개발자의 편의대로 재창조하여 사용하는 것
- 오버로딩과 달리 부모노드의 메소드와 동일한 이름 동일한 매개변수로 정의해야 한다.
- super 연산자를 사용하여 부모노드의 메소드를 호출할 수 도 있다.
필드의 다형성
자바는 다형성을 위해 부모클래스 타입에 모든 자식 객체가 대입될 수 있도록 자동으로 타입변환을 시켜준다.
Class Phone {
...;
}
Class SmartPhone extends Phone{
...;
}
SmartPhone smartPhone = new SmartPhone;
Phone phone = smartPhone;
- 위와 같이 Phone 클래스를 상속받은 SmartPhone 클래스의 인스턴스는 SmartPhone 타입이 아니더라도 부모클래스 타입인 Phone에 대입될 수 있다.
- 특징
- 부모클래스에 선언된 필드와 메소드만 접근이 가능하다
- 부모클래스 메소드를 자식클래스에서 오버라이딩 했을경우 자식클래스 메소드가 대신 호출된다.