-
overloading vs overriding 차이 오버로딩 vs 오버라이딩 차이Backend/Java 2022. 10. 31. 20:35
1. 오버로딩
- 같은 이름의 메서드(함수)를 여러개 가지면서 매개변수 유형과 개수가 다르도록 하는 것
class TestOverloading { //매개변수가 없는 sol 메서드 void sol() { System.out.println("매개변수가 없습니다"); } //매개변수가 int형 2개인 sol 메서드 void sol(int a, int b) { System.out.println("매개변수" + a + "와" + b); } //매개변수가 String형 1개인 sol 메서드 void sol(String c) { System.out.println("매개변수" + c); } } public class TestOverLoad { public static void main(String[] args) { TestOverloading ob = new TestOverloading(); ob.sol(); ob.sol(1,2); ob.sol("오버로딩 테스트"); } }
출력물 :
"매개변수가 없습니다"
"매개변수1와2"
"매개변수오버로딩테스트"
2. 오버라이딩
- 상위 클래스가 가지고 있는 메서드도 하위 클래스로 상속되어 하위 클래스에 사용
- 하위 클래스에서 메서드를 재정의해서 사용할 수 있음
- 쉽게 말해 메서드 이름이 같고, 매개변수가 같고, 반환형이 같을 경우 상속받은 메서드를 덮어쓴다고 생각하면 됨
- '부모 클래스의 메서드는 무시하고, 자식 클래스의 메서드 기능을 사용하겠다' 와 같음
//부모 클래스 class Woman { public String name; public int age; public void info() { System.out.println("여자 이름은 "+name+", 나이는 "+age+"살"); } } // Woman 클래스 상속받은 Job 클래스 class Job extends Woman { String job; // 부모 클래스(Woman)에 있는 info 메서드 재정의 public void info() { System.out.println("여자의 직업은 "+job+"입니다."); } } public class TestOverRide { public static void main(String[] args) { //Job 객체 생성 Job job = new Job(); //변수 설정 job.name = "솔이"; job.age = 26; job.job = "개발자"; //호출 job.info(); } }
출력물 :
"여자의 직업은 개발자입니다."
오버로딩 오버라이딩 메서드 이름 동일 동일 매개변수, 타입 다름 동일 리턴 타입 상관없음 동일 'Backend > Java' 카테고리의 다른 글
인터페이스 vs 추상클래스 (0) 2022.11.23 객체지향 프로그래밍 정의, 장단점, 객체지향 프로그래밍 키워드 (0) 2022.11.15 객체지향프로그래밍 vs 절차지향프로그래밍 (0) 2022.11.15 int와 Integer 차이 (0) 2022.10.04 String ↔ Char 변환 정리 (0) 2022.09.21