📌 오버로딩(Overloading)
⭐ 개념
- 메소드 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름의 여러개의 함수를 정의할 수 있는 것
- '리턴 값만' 다른 것은 오버로딩을 할 수 없다
⭐ 코드
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
double d = 1.1;
double e = 2.3;
Calculator calc = new Calculator();
calc.add(a, b);
calc.add(a, b, c);
calc.add(d, e);
}
}
class Calculator{
void add(int a, int b) {
System.out.println(a+b);
}
void add(int a, int b, int c) {
System.out.println(a+b+c);
}
void add(double a, double b) {
System.out.println(a+b);
}
}
📌 오버라이딩(Overriding)
⭐ 개념
- 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의하는 것
- 상속관계에 있는 클래스 사이에서 사용됨
- 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다
- static, final로 선언한 메소드는 오버라이딩 불가
- interface를 implements하여 오버라이딩 하기도 함
⭐ 코드
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.talk();
}
}
class Animal{
void talk() {
System.out.println("TALK");
}
}
class Dog extends Animal{
@Override
void talk() {
System.out.println("멍멍");
}
}