: 부모 클래스에서 정의한 메서드를 자식 클래스에서 자식 클래스에 맞게 다시 작성(재정의) 하는 것을 말함
[메서드 재정의 특징]
[메서드 재정의 조건]
<예시>
Animal 클래스 생성
public class Animal {
void sound() {
System.out.println("소리를 냅니다!!");
} // sound() 메서드 end
}
Animal 클래스를 상속받을 Dog 클래스 생성
public class Dog extends Animal {
// 메서드 제정의(overriding) : 상속에서만 발생
//void sound() { // 반환형, 자료형, 매개변수, 매개명 모두 같아야 함!!!
// 안 그러면 자식클래스에서 만든 다른 메서드로 인식!
//System.out.println("멍멍멍!!!");
//}
// 메서드 정의 시 오타가 날 것을 대비 (ctrl + space바)
@Override
void sound() { // public void sound(){ } 도 가능하나
// private void sound(){ } 는 불가능!
System.out.println("멍멍멍!!!");
}
}
이어서 고양이, 소 클래스도 생성해서 오버라이딩으로 재정의하여 각 동물에 맞는 울음소리가 출력될 수 있게 메서드를 만들자


////////////// Cat 클래스 생성
public class Cat extends Animal {
@Override
void sound() {
System.out.println("니야아아오오옹");
}
}
////////////// Cow 클래스 생성
public class Cow extends Animal {
@Override
void sound() {
System.out.println("음멈멈멈머");
}
}
메인메서드로 받을 Animal_01 클래스 생성
=============================코드=============================
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
Cow cow = new Cow();
dog.sound();
cat.sound();
cow.sound();
}

<예시>
Shape 클래스 생성
=============================코드=============================
public class Shape {
void draw() {
System.out.println("그리다!");
}
}
Shape 클래스를 상속받을 Circle, Rectangle, Line 클래스 생성


=============================코드=============================
////////////// Circle 클래스 생성
public class Circle extends Shape {
@Override
void draw() {
System.out.println("동그라미를 그리자!");
}
}
////////////// Rectangle 클래스 생성
public class Rectangle extends Shape {
@Override
void draw() {
System.out.println("삼각형을 그리자!");
}
}
////////////// Line 클래스 생성
public class Line extends Shape {
@Override
void draw() {
System.out.println("선을 그리자!");
}
}
메인메서드로 받을 Shape_02 클래스 생성
=============================코드=============================
public static void main(String[] args) {
Line line = new Line();
Circle circle = new Circle();
Rectangle rectangle = new Rectangle();
line.draw();
circle.draw();
rectangle.draw();
}
