[Java] 다형성과 클래스 상속

DEVELOPERS_Ivan ㅣ 2024. 3. 14. 17:58

목차
- Q1_다형성이란?
- Q2_클래스 상속이란?

- Q1_다형성이란?

더보기

A. 하나의 타입으로 여러 객체를 대입할 수 있게하여 다양한 형태로 동작하는 것.

- 객체 지향 프로그래밍에서 중요한 개념으로, 많은 형태를 가질 수 있는 능력을 의미한다.
- 주로 상속과 인터페이스를 통해 구현이 된다.

- 상위 클래스 정의 : 

// 'Post'라는 상위 클래스 정의
// 이 클래스는 모든 블로그 게시글의 공통적인 구조를 정의합니다.
class Post {
    protected String title;
    protected String content;

    // 게시글의 제목과 내용을 초기화하는 생성자
    public Post(String title, String content) {
        this.title = title;
        this.content = content;
    }

    // 게시글을 표시하는 메서드
    public void display() {
        System.out.println(title);
        System.out.println(content);
    }
} // end of class

 

- 1. 상속받는 하위 클래스 : 

// 'TechPost'라는 'Post' 클래스의 하위 클래스 정의
// 이 클래스는 기술 관련 블로그 게시물을 표현합니다.
class TechPost extends Post {
    public TechPost(String title, String content) {
        super(title, content);  // 상위 클래스의 생성자를 호출하여 초기화
    }

    // display 메서드 오버라이딩
    @Override
    public void display() {
        System.out.println("Tech Post: ");
        super.display();  // 상위 클래스의 display 메서드 호출
    }
} // end of class

 

- 2. 상속받는 하위 클래스 : 

// 'TravelPost'라는 'Post' 클래스의 하위 클래스 정의
// 이 클래스는 여행 관련 블로그 게시물을 표현합니다.
class TravelPost extends Post {
    public TravelPost(String title, String content) {
        super(title, content);  // 상위 클래스의 생성자를 호출하여 초기화
    }

    // display 메서드 오버라이딩
    @Override
    public void display() {
        System.out.println("Travel Post: ");
        super.display();  // 상위 클래스의 display 메서드 호출
    }
} // end of class

 

- Main 클래스 : 

// 메인 클래스와 메인 메서드 정의
public class Blog {
    public static void main(String[] args) {
        // 다형성을 사용하여 여러 타입의 게시물을 저장하는 배열 생성
        Post[] posts = new Post[2];
        posts[0] = new TechPost("Learning Java", "Java is a versatile language...");
        posts[1] = new TravelPost("My Trip to Paris", "Paris is a wonderful city...");

        // 배열에 저장된 모든 게시물을 표시
        for (Post post : posts) {
            post.display();
            System.out.println();
        }
    } // end of main
} // end of class

- Q2_클래스 상속이란?

더보기

A. 부모의 클래스에 멤버 변수와 메서드를 자식 클래스에게 물려 받게 하는 것.

- 상위(부모) 클래스 정의 : 

// 부모 클래스 'Animal' 정의
class Animal {
    String name;

    public void eat() {
        System.out.println(name + " is eating");
    }

    public void sleep() {
        System.out.println(name + " is sleeping");
    }
} // end of class

 

- 하위(자식) 클래스 정의  : 

// 'Animal' 클래스를 상속받는 자식 클래스 'Dog' 정의
class Dog extends Animal {
    public Dog(String name) {
        this.name = name;  // 부모 클래스의 name 속성을 초기화
    }

    public void bark() {
        System.out.println(name + " says Woof!");
    }
} // end of class

 

- Main 클래스 정의 : 

// 메인 클래스
public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog("Buddy");
        myDog.eat();    // 상속받은 메서드
        myDog.sleep();  // 상속받은 메서드
        myDog.bark();   // 자식 클래스에서 정의한 메서드
    } // end of main
} // end of class