오버로딩(Overloading) 정의 및 특징
1. 상속과 아무런 관련 없음
2. 메소드의 하는 일은 같지만 선언부는 달라야함
3. 메소드의 인자 타입, 인재 개수 중 적어도 하나가 달라야함
4. 하나의 메소드명으로 여러개의 메소드를 정의할 수 있음
5. 그로 인해 외부에서는 여러 타입의 데이터를 하나의 메소드로 처리할 수 있는것처럼 보임
public class OverloadingExam {
public static void main(String[] args) {
a(1); // 디폴트 타입 int
a(1l); // 뒤에 l을 붙이면 long으로 들어감
a(1.1); // 디폴트 타입 double
a(1.1f); // 뒤에 f를 붙이면 float으로 들어감
}
public static void a(int a) {
System.out.println("int");
}
public static void a(long a) {
System.out.println("long");
}
public static void a(double a) {
System.out.println("double");
}
public static void a(float a) {
System.out.println("float");
}
}
<<<결과값>>>
int
long
double
float
오버라이딩(Overriding) 정의 및 특징
1. 한마디로 메소드 재정의 --> 메소드의 기능이 바뀜 --> 새로운 메소드로 인식
2. 메소드의 선언부는 같지만 하는일이 달라짐
3. 메소드의 선언부(리턴타입, 메소드명, 인자값)는 반드시 일치해야함
4. 접근지정자는 상속받은 부모보다 범위가 같거나 넓어야함
5. 상속관계의 서로 다른 두 클래스 사이에서 발생함
6. 부모의 메소드를 물려받음 --> 물려받은 메소드를 자식이 고쳐씀
class Exam1{
public void print(){
System.out.println("Exam1");
}
}
class Exam2 extends Exam1{
public void print(){
System.out.println("Exam2");
}
}
public class OverridingExam {
public static void main(String[] args) {
Exam1 exam = new Exam2();
exam.print();
}
}
<<<결과값>>>
Exam2
Exam2가 부모클래스인 Exam1의 print()를 오버라이딩 해서 자식클래스인 Exam2의 print()가 나옴
'CS > Java' 카테고리의 다른 글
Java Static - Static에 대한 모든것! 이거 하나면 끝! (0) | 2019.07.29 |
---|---|
Java 상속 - 5. Polymorphism(다형성) & instanceof (0) | 2019.07.29 |
Java 상속 - 3. toString (0) | 2019.07.23 |
Java 상속 - 2. 상속과 생성자 (1) | 2019.07.22 |
Java 상속 - 1. 상속이란? (0) | 2019.07.22 |