반응형
오버로딩(Overloading) vs 오버라이딩(Overriding)
오버로딩(Overloading) : 기존에 없는 새로운 메서드를 정의하는 것(new)
메소드의 이름은 동일하나 매개변수의 갯수나, 타입이 다르다.
즉, 타입이 다른 매개변수로 호출을 하기 때문에 새로운 메서드이다.
오버라이딩(Overriding) : 상속받은 메서드의 내용을 변경하는 것(change, modify)
상속받은 클래스에서 상속받은 메서드를 새로 재정의하여 사용.
상속을 받았는데 상속받은 메서드의 기능이 부족해서 자식 클래스에서 해당 메서드를 수정하여 새로운 기능을 추가하여 사용한다. 오버라이딩시 메모리영역에 새로 들어간다.
오버로딩과 오버라이딩 차이점
구분 | 오버로딩 | 오버라이딩 |
메서드 이름 | 동일 | 동일 |
매개변수, 변수타입 | 다름 | 동일 |
리턴 | 상관없음 | 동일 |
오버로딩(Overloading)
class Overloading{
public void method() {
System.out.println("매개변수가 없는 method()");
}
public void method(int a) {
System.out.println("매개변수 int형을 가진 method()");
}
public void method(String a) {
System.out.println("매개변수 String형을 가진 method()");
}
}
public class Main {
public static void main(String[] args) {
Overloading over = new Overloading();
over.method();
over.method(1);
over.method("hello world");
}
}
오버로딩(Overloading) 실행 결과
매개변수가 없는 method()
매개변수 int형을 가진 method()
매개변수 String형을 가진 method()
오버라이딩(Overriding)
Parent Class
public class Parent {
public void parentMethod() {
System.out.println("Parent parentMethod()");
}
public void parentProcess() {
System.out.println("Parent pProcess()");
}
}
Child Class
public class Child extends Parent {
public void parentMethod() { //Overriding
System.out.println("Child parentMethod()");
}
public void childMethod() {
System.out.println("Child Method()");
}
}
Main
public class MainClass {
public static void main(String[] args) {
Child c = new Child();
//상속받았으니 부모의 메서드는 당연히 실행이 된다.
c.parentProcess(); //상속받은 메서드
c.parentMethod(); //오버라이딩된 메서드
c.childMethod(); //Child 메서드
}
}
오버라이딩(Overriding) 실행결과
Child parentMethod()
Parent pProcess()
Child func()
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[JAVA] ArrayList CRUD 사용하기 (0) | 2021.05.20 |
---|---|
[JAVA] 업캐스팅(up casting), 다운캐스팅(down casting) Casting을 하는 이유는? 다형성? (2) | 2021.05.20 |
[JAVA] 피보나치 수열 간단하게 구현 (2) | 2021.05.13 |
[JAVA] Calendar class 사용해서 날짜 가져오기 (0) | 2021.05.13 |
[JAVA] String class 자주사용하는 메서드 (0) | 2021.05.13 |