-
[JAVA] Overloading과 Overriding의 차이JAVA 2020. 3. 31. 15:42728x90
Overloading
- 두 메소드가 같은 이름을 갖고 있지만 인자의 수나 자료형이 다른 경우
- 조건
- 메소드 이름이 같아야함
- 리턴형이 같아도 되고 달라도됨
- 파라미터 개수가 달라야함
- 파라미터 개수가 같을 경우 데이터 타입이 달라야함
- ex)
public void test(int a) {...} public void test(int a, int b) {...} public void test(String a) {...}
Overriding
- 상위 클래스의 메소드와 이름이 같은 함수를 하위 클래스에 재정의
- 조건
- 오버라이드 하고자 하는 메소드가 상위 클래스에 존재해야함
- 메소드 이름이 같아야함
- 메소드 파라미터 개수, 파라미터 자료형이 같아야함
- 메소드 리턴형이 같아야함
- 상위 메소드와 동일하거나 내용이 추가되어야함
- static 메소드는 상속되지 않음
- static 메소드는 클래스 단위로 만들어지기 때문에 객체 단위로 형성되는 Override는 성립될 수 없음
- static 메소드는 클래스가 컴파일 되는 시점에 결정
- Override 메소드는 런타임 시점에 사용될 메소드가 결정
- ex)
public abstract class Parent{ public void test() { System.out.println("Parent Class"); } } public class Child extends Parent { @Override public void test(){ System.out.println("Child Class"); } } public class Main{ public static void main(String[] args) { Parent parent = new Parent(); Child child = new Child(); parent.test(); //result : Parent Class child.test(); //result : Child Class } }
728x90'JAVA' 카테고리의 다른 글
[JAVA] 스트림(Stream) (0) 2020.05.21 [JAVA] 람다식(Lambda Expression) (0) 2020.05.21 [JAVA] 제네릭(Generic) (0) 2020.04.06 [Java] HashMap 값 추출 (0) 2020.02.23 [JAVA] BufferedReader, BufferedWriter 사용법 (0) 2019.07.28