Java/JAVA 100 문제 풀이
자바 part.3 문제풀이 - 상속 : Person과 Hero예제를 통한 이해
진이최고다
2023. 7. 25. 00:15
Person클래스 상속받은 Hero클래스 예제
class Person{
//Field
int gender;
int power;
//Constructor
Person(){
this.gender = 1; // 1:남성, 2:여성
this.power = 100; // 기본파워
}
//Method
void walk() {
System.out.println("걷기");
}
}
class Hero extends Person{
//Field
String name;
int age;
//Constructor
Hero(){}
Hero(String name, int age){
super();
this.name = name;
this.age = age;
}
//Method
void walk() {
System.out.println("뛰기");
}
void displayPerson() {
System.out.println("이름:" + name + ", 나이:" + age + ", 성별:" + gender + ", 파워:" + power);
}
}
public class oop_InheritanceSample2 {
public static void main(String[] args) {
// [1] : 객체생성
Person person1 = new Person();
System.out.println("--- 부모클래스 객체 ---");
person1.walk();
// [2] : 상속을 통한 히어로 객체 생성
Hero hero1 = new Hero("아이언맨", 20);
System.out.println("--- 자식클래스 객체 ---");
hero1.displayPerson();
hero1.walk();
}
}
--- 부모클래스 객체 ---
걷기
--- 자식클래스 객체 ---
이름:아이언맨, 나이:20, 성별:1, 파워:100
뛰기
부모 클래스 : Person class
이 클래스는 성별(gender)과 파워(power)라는 두 개의 인스턴스 변수와 '걷기'라는 동작을 표현하는 walk()메서드를 가지고 있다. Person클래스의 생성자는 성별과 파워에 기본값을 할당한다. 성별은 남성을 나타내는 1, 파워는 100으로 설정되어 있다.
자식 클래스 : Hero 클래스
Hero클래스는 Person 클래스를 상속(extends)하고 있다. 이것은 Hero클래스가 Person클래스의 모든필드와 메서드를 상속받아 사용할 수 있다는 것을 으미한다. 따라서 Hero클래스는 "성별(gender), 파워(power), 그리고 walk()메서드를 가지고 있다. 추가로 Hero클래스 name, age, 그리고 두 가지 메서드 walk(), displayPerson()를 가지고 있다. walk() 메서드는 부모 클래스인 Person클래스의 메서드를 오버라이드(재정의)하여 "뛰기"라는 새로운 동작으로 초기화하였고, displayPerson() 메서드는 "이름, 나이, 성별, 파워" 정보를 출력하는 기능을 가지고 있다.
상속의 가장 중요한 이점은 기존의 코드를 재사용하면서도 확장을 할 수 있다는 점이다.
상속을 이용한 코드 재사용과 확장, 그리고 오버라이딩을 이용한 메서드의 재정의을 볼 수 있다.