Java 무작정 따라하기
7. java 오버로딩, 오버라이딩 및 다형성과 형변환 학습하기
1. 오버로딩, 오버라이딩
- 오버 로딩 (overloading)
- 같은 이름의 메소드가 여러개 있지만, 매개변수의 유형과 개수가 다르게 하는 기술로써
- 메소드 오버로딩 및 생성자 오버로딩 2가지 가 있고 둘 다 같은 개념이다.
- 오버 라이딩 (overriding)
- 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의하여 사용하는 기술로써
- 상속 관계에 있는 클래스 간에 같은 이름의 메소드를 재정의하는 기술을 오버라이딩 이라고 한다.
2. 다형성과 형변환
- 다형성
- 하나의 객체가 다양한 형상이나 다양한 기능을 가지는 것을 의미한다.
- 하나의 클래스에서 오버로딩 된 메소드들은 유사하지만 조금씩 다른 기능을 수행한다.
- 자식 클래스에서 재정의된 메소드 (오버라이딩)는 부모와 유사하지만 다른 기능을 수행한다.
- 형 변환
- 상속 관계에 있는 클래스 간에는 타입 변환이 가능하다.
- 전혀 다른 두 클래스 간에 타입 변환은 금지되어 있다.
- 하위 클래스에서 상위 클래스로의 형 변환은 문제가 없다.
- 상위 유형의 변수는 하위 객체의 참조값을 가질 수 있다.
- 상속 관계에 있는 클래스 간에는 타입 변환이 가능하다.
3. 클래스 및 인터페이스의 다형성
- 클래스의 다형성
- 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 오버라이딩 할 수 있다.
- 같은 이름과 매개변수 및 반환형을 가지지만 몸체가 달라진다.
- 인터페이스의 다형성
- 자식 클래스들에서 상위 인터페이스의 메소드를 다르게 구현한다.
// 예제 1
Class A{
public void func(){
System.out.println("a");
}
}
Class B extends A{
public void func(){
System.out.println("b");
}
}
Class C extends B{
public void func(){
System.out.println("c");
}
}
public class Test{
public static void main(String[] args){
// A의 정의된 func가 아니
// B에서 재정의된 func가 실행됨.
A a = new B();
a.func(); // b
// C에서 재정의된 func가 실행된다.
a = new C();
a.func(); // c
}
}
// 예제 2
class Employee{
int nSalary;
Sring szDept = null;
public void doJob(){
system.out.println("Do Something!!");
}
}
class Sales extens Employee{
public Sales(){
szDept = "Sales";
}
public void doJob(){
system.out.println("Do Something!!");
}
}
class Development extends Employee{
public Development(){
szDept = "DevDept";
}
/*
public void doJob(){
system.out.println("Do Something!!");
}
*/
}
public class Company{
public static void main (String[] args){
Employee emp1,emp2 ;
emp1 = new Sales();
emp2 = new Development();
emp1.doJob(); // Do sales
// Development 클래스에서 doJob()을 찾지만
// 주석 처리되어 있어서 상위 Employee의 doJob()을 실행
emp2.doJob(); // Do Something!!
}
}
내용이 유익하셨다면 구독 및 좋아요 클릭 부탁드려요 :)
오늘 하루도 즐거운 하루 보내세요!
'Language > Java' 카테고리의 다른 글
[Java 무작정 따라하기] 9. JAVA 제네릭, 자바 제네릭 클래스, 자바 제네릭 알아보기 (0) | 2020.05.11 |
---|---|
[Java 무작정 따라하기] 8. Java 열거형 및 익명클래스 알아보기 (0) | 2020.04.28 |
[Java 무작정 따라하기] 6. 알기 쉽게 설명하는 Java 인터페이스 정리! (0) | 2020.04.27 |
[Java 무작정 따라하기] 5. 자바 추상클래스 간단 정리 (0) | 2020.04.27 |
[Java 무작정 따라하기]4. 알기쉽게 설명한 자바 클래스 완벽 정리! (0) | 2020.03.19 |