-
(JAVA) 메소드 오버로딩 vs 메소드 오버라이딩JAVA 2021. 7. 7. 17:11
1. 메소드 오버로딩
JAVA는 C언어와 다르게 함수명을 중복해서 정의할 수 있다. 조건과 특징은 아래와 같다.
- 같은 알고리즘(로직) 기능을 가지고 있어야 한다.
- 매개변수, 인자의 개수 or 데이터 타입(리턴 타입)이 달라야 한다. ( 하지만 기능은 같음 )
- 상속 관계 X
- 여러개 정의할 수 있다.
123456789101112131415161718192021222324package test;public class Test1 {static int sum(int a, int b) {return a+b;}static int sum(int a, int b, int c) {return a+b+c;}static double sum(double a, double b) {return a+b;}public static void main(String[] args) {int a = 10, b = 20, c = 30;double d = 14.2 , e = 15.5;System.out.println(sum(a,b)); // 첫 번째 함수System.out.println(sum(a,b,c)); // 두 번째 함수System.out.println(sum(d,e)); // 세 번째 함수}}cs 2. 메소드 오버라이딩
메소드 오버라이딩은 객체지향의 핵심 중 하나인 '상속'의 중요한 개념 중 하나이다.
메소드 오버라이딩을 하기 위한 조건과 특징은 아래와 같다.
- 상속관계 이어야 한다.
- 인자의 개수, 타입 and 리턴타입 모두 같아야한다. (= method signature가 동일해야 함!)
- 부모 클래스에 있는 메서드의 기능을 재정의 하고 싶을 때 사용한다.
1234567891011121314151617181920212223242526272829303132333435package test;class Animal{String name;int age;Animal(String name){this.name = name;}void show() {System.out.println("이 동물의 이름은 " + this.name + "입니다.");}}class Turtle extends Animal{Turtle(String name, int age){super(name);this.age = age;}void show() { // 메소드 오버라이딩 --> 부모 클래스의 show() 함수를 재정의합니다.System.out.println("이 거북이의 이름은 " + this.name + "이고 " + this.age + "살 입니다.");}}public class Test2 {public static void main(String[] args) {Animal a = new Animal("꼬부기");Turtle b = new Turtle("꼬부기", 120);a.show();b.show();}}cs 'JAVA' 카테고리의 다른 글
(JAVA) Stack 과 Queue 자료구조 (0) 2021.07.19 (JAVA) 다형성과 동적 바인딩 (0) 2021.07.19 (JAVA) 추상화와 추상클래스 (0) 2021.07.19 (JAVA) 객체 지향 언어의 특징 (0) 2021.07.18 (JAVA) 미니 프로젝트 - 자판기 구현하기 (0) 2021.07.02