class Calculator {
// 정수 덧셈
public int add(int a, int b) {
return a + b;
}
// 실수 덧셈
public double add(double a, double b) {
return a + b;
}
// 세 개의 정수 덧셈
public int add(int a, int b, int c) {
return a + b + c;
}
}
public class OverloadingExample {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(5, 10)); // 정수 덧셈: 15
System.out.println(calc.add(5.5, 10.5)); // 실수 덧셈: 16.0
System.out.println(calc.add(1, 2, 3)); // 세 정수 덧셈: 6
}
}
동일한 이름의 메소드를 매개변수만 다르게 하여 정의하는 것
코드의 가독성과 재사용성을 위해서 사용한다.
static
은 오버로딩에 영향을 주지 않는다.class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}
public class OverridingExample {
public static void main(String[] args) {
Animal animal = new Animal();
Animal dog = new Dog(); // 부모 타입으로 자식 객체 참조
animal.sound(); // "Animal makes a sound"
dog.sound(); // "Dog barks" (다형성)
}
}
상위 클래스의 메소드를 하위 클래스에서 재정의하는 것
부모 클래스의 기본 동작을 변경하거나 좀 더 세세하게 확장하여 다형성을 구현할 때 사용한다.
protected
면 자식 클래스는 public
만 가능하다.final
이면 오버라이딩 불가능하다.@Override
사용