목차
- 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
'Java' 카테고리의 다른 글
[Java] JVM, JRE, JDK란? (0) | 2024.03.15 |
---|---|
[Java] 업 캐스팅과 다운 캐스팅 (0) | 2024.03.15 |
[Java] 메서드 오버라이딩과 메서드 오버로딩 (0) | 2024.03.14 |
[Java] 객체 지향 프로그래밍(OOP) 장, 단점 & SOLID 5가지의 원칙 (1) | 2024.03.14 |
[TIL] 접근 제어 지시자와 정보 은닉 (0) | 2023.12.11 |