오버라이딩(Overriding)
상위 클래스가 가지고 있는 메소드를 하위 클래스에서 같은 시그니처(메소드 이름, 매개변수 타입 및 개수)를 갖는 메소드로 재정의 하는 것.
=> 상속받은 것을 내가 원하는 대로 커스터마이징 하는 것
=> 상속관계 클래스에서 사용되며 static,final로 선언한 메서드는 오버라이딩이 불가능
메소드 오버라이딩 (Method Overriding)
model 패키지 Parent class와 Child class 에 데이터 저장하고, main 패키지의 PersonMain class에서 실행했다.
package model;
public class Parent {
//멤버 변수에 이상한것 넣지 못하게 private으로 하고, 게터세터에서 조건 넣어주기
protected String name;
protected int age;
protected int money;
public Parent() {
System.out.println("Parent Class 생성자 동작 1");
} // 디폴트 생성자 무조건 만들어 주자! => 그래야 다른데서 오류 안 생김.
public Parent(String name, int age, int money) {
// TODO Auto-generated constructor stub
this.name = name;
if (age > 0 ) {
this.age = age;
}
this.money = money;
System.out.println("Parent Class 생성자 동작 2");
}
public void print(){
System.out.println("이름 : " +name + ", 나이 : " +age + ", 재산 : " +money );
}
package model;
public class Child extends Parent {
//부모의 함수도 다 상속받는다.
private String hobby;
public Child() {
System.out.println("Child class 생성자 1");
}
public Child(String name, int age, int money, String hobby) {
// TODO Auto-generated constructor stub
super(name, age, money); // 부모 생성자 호출
this.hobby = hobby;
System.out.println("Child class 생성자 2");
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
// 메소드 오버라이딩 (Method Overriding)
@Override
public void print(){
// TODO Auto-generated method stub
super.print();
System.out.println("취미는 : "+hobby);
}
}
오버라이딩 방법
1. 오른쪽 마우스 클릭 > Source > Override/Implement Methods..
2. 오버라이딩 할 함수 선택하기
package Main;
import model.Child;
import model.Parent;
public class PersonMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Parent p = new Parent("홍길동", 55, 100000000);
// heap 메모리에 객체 생성, new는 메모리를 생성한다는 의미
p.print();
Child c = new Child("홍나나", 25, 1000000, "게임"); //객체 생성함.
c.print();
}
}
'Software Development > Java' 카테고리의 다른 글
[Java] try catch finally 문법 (0) | 2024.06.04 |
---|---|
[Java] HashMap 사용법 (0) | 2024.06.04 |
[Java] 생성자 오버로딩(Constructor Overloading) (0) | 2024.05.31 |
[Java] 패키지(Package) 만들기, this로 사용하는 멤버 변수 (0) | 2024.05.31 |
[Java] static 사용 방법, 메모리 영역 (0) | 2024.05.31 |