
오버라이딩 예시
class Animal {
void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // Animal 타입이지만 실제는 Dog
myAnimal.sound(); // 출력: Bark
myAnimal = new Cat(); // Animal 타입이지만 실제는 Cat
myAnimal.sound(); // 출력: Meow
}
}
- sound() 메서드는 Animal에 정의되어 있지만,
- 실제로는 Dog나 Cat에 있는 sound()가 호출
오버로딩 예시
class Printer {
void print(String str) {
System.out.println("String: " + str);
}
void print(int num) {
System.out.println("Integer: " + num);
}
void print(double d) {
System.out.println("Double: " + d);
}
}
public class Main {
public static void main(String[] args) {
Printer printer = new Printer();
printer.print("Hello"); // String 버전 호출
printer.print(100); // int 버전 호출
printer.print(3.14); // double 버전 호출
}
}
- rint() 메서드는 3개가 있지만,
- 호출될 메서드는 컴파일러가 매개변수 타입을 보고 결정
'JAVA' 카테고리의 다른 글
| super 키워드 , 다운캐스팅 , instanceof (3) | 2025.07.15 |
|---|---|
| object 클래스 ,string 관련 (0) | 2025.07.15 |
| 자바에서 비교 시 equals / == 비교 (0) | 2025.04.26 |
| 자바 메모리 구조 (0) | 2025.04.26 |
| SHA256 + SALT 로 비밀번호 암호화 하기 (0) | 2025.04.06 |