상속과 다형성은 객체지향에서 매우 기본적이고 중요한 개념입니다. 레퍼런스를 기반으로 반복적으로 숙지하시면 좋다.
part4. 객체지향 프로그래밍 설계하기
CH2. 상속관계에서 객체생성 및 Override
- 동작측면에서 클래스 설계하기
개념:
객체 지향 프로그래밍에서 클래스 설계는 매우 중요합니다. 특히 상속 관계에서는 부모 클래스와 자식 클래스 간의 역할과 관계를 명확히 정의해야 합니다. 동작측면에서 클래스를 설계할 때에는 각 클래스의 책임과 행동을 고려해야 합니다.
예시:
객체 지향 프로그래밍에서 클래스 설계는 매우 중요합니다. 특히 상속 관계에서는 부모 클래스와 자식 클래스 간의 역할과 관계를 명확히 정의해야 합니다. 동작측면에서 클래스를 설계할 때에는 각 클래스의 책임과 행동을 고려해야 합니다.
// 클래스 설계 예시 - class Person {
- public void introduce() {
- System.out.println("안녕하세요, 저는 사람입니다.");
- }
- }
- class Student extends Person {
- @Override
- public void introduce() {
- System.out.println("안녕하세요, 저는 학생입니다.");
- }
- }
- class Teacher extends Person {
- @Override
- public void introduce() {
- System.out.println("안녕하세요, 저는 선생님입니다.");
- }
- }
// 클래스 설계 예시 class Person { public void introduce() { System.out.println("안녕하세요, 저는 사람입니다."); } }
class Student extends Person { @Override public void introduce() { System.out.println("안녕하세요, 저는 학생입니다."); } }
class Teacher extends Person { @Override public void introduce() { System.out.println("안녕하세요, 저는 선생님입니다."); } }
// 클래스 설계 예시 class Person { public void introduce() { System.out.println("안녕하세요, 저는 사람입니다."); } }
class Student extends Person { @Override public void introduce() { System.out.println("안녕하세요, 저는 학생입니다."); } }
class Teacher extends Person { @Override public void introduce() { System.out.println("안녕하세요, 저는 선생님입니다."); } }- 상속관계에서 객체생성 방법
개념:
상속 관계에서는 자식 클래스의 객체를 생성할 때 부모 클래스의 생성자를 호출하여 초기화해야 합니다. 이때 super 키워드를 사용하여 부모 클래스의 생성자를 명시적으로 호출합니다.
예시:
// 객체 생성 예시 - Person person = new Person();
- Student student = new Student();
- Teacher teacher = new Teacher();
// 객체 생성 예시 Person person = new Person(); Student student = new Student(); Teacher teacher = new Teacher();- java
Copy code
// 객체 생성 예시 Person person = new Person(); Student student = new Student(); Teacherteacher = new Teacher(); - 상속 체이닝과 super
개념:
상속 체이닝은 자식 클래스에서 부모 클래스의 생성자를 호출하는 과정을 의미합니다. 이를 통해 부모 클래스의 멤버 변수를 초기화하고, 상속 관계를 유지합니다. super 키워드는 이러한 상속 체이닝을 구현할 때 사용됩니다.
예시:
// 상속 체이닝 및 super 키워드 예시 - class Person {
- private String name;
- public Person(String name) {
- this.name = name;
- }
- }
- class Student extends Person {
- private int grade;
- public Student(String name, int grade) {
- super(name);
- this.grade = grade;
- }
- }
- 메서드의 재정의(Override)란
개념:
메서드의 재정의는 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 다시 정의하여 사용하는 것을 의미합니다. 이를 통해 자식 클래스는 부모 클래스의 동작을 변경하거나 확장할 수 있습니다.
예시:
// 메서드 재정의 예시 - class Person {
- public void introduce() {
- System.out.println("안녕하세요, 저는 사람입니다.");
- }
- }
- class Student extends Person {
- @Override
- public void introduce() {
- System.out.println("안녕하세요, 저는 학생입니다.");
- }
- }
CH3. 객체 형변환(Object Casting)
- 부모와 자식 간에 형 변환이 된다
개념:
객체 형변환은 상속 관계에서 부모 클래스와 자식 클래스 간의 타입 변환을 의미합니다. 이를 통해 부모 클래스 타입의 변수로 자식 클래스 객체를 참조할 수 있습니다.
예시:
// 객체 형변환 예시 - Person person = new Student();
- Upcasting 과 Downcasting
개념:
Upcasting은 자식 클래스 타입을 부모 클래스 타입으로 변환하는 것을 말하며, Downcasting은 부모 클래스 타입을 자식 클래스 타입으로 변환하는 것입니다. 이때 명시적인 형변환 연산자가 사용됩니다.
예시:
// Upcasting과 Downcasting 예시 - Person person = new Student();
- Student student = (Student) person;
CH4. 다형성(Polymorphism)과 활용
- 다형성이란 무엇인가
개념:
다형성은 같은 이름의 메서드나 연산자가 다른 동작을 수행할 수 있는 것을 의미합니다. 이는 상속과 메서드 오버라이딩을 전제로 하며, 부모 클래스 타입의 변수로 다양한 자식 클래스 객체를 참조하여 사용할 수 있습니다.
예시:
// 다형성 예시 - Person person1 = new Student();
- Person person2 = new Teacher();
- 다형성 이론을 설명하기 위한 전제조건
개념:
다형성을 활용하기 위해서는 상속 관계에 있는 클래스들 간에 메서드 오버라이딩이 되어 있어야 합니다.
예시:
// 다형성을 위한 전제조건 예시 - class Person {
- public void introduce() {
- System.out.println("안녕하세요, 저는 사람입니다.");
- }
- }
- class Student extends Person {
- @Override
- public void introduce() {
- System.out.println("안녕하세요, 저는 학생입니다.");
- }
- }
- 다형성 활용(다형성 인수)
개념:
메서드의 매개변수로 부모 클래스 타입을 사용하여 다양한 자식 클래스 객체를 전달할 수 있습니다. 이를 통해 하나의 메서드가 여러 타입의 객체를 처리할 수 있습니다.
예시:
// 다형성 인수 예시 - class PetOwner {
- public void playWithPet(Person person) {
- System.out.println("주인이 펫과 놀고 있습니다.");
- }
- }
- 다형성 활용(다형성 배열)
개념:
배열의 원소로 여러 타입의 객체를 가질 수 있습니다. 부모 클래스 타입의 배열에 여러 종류의 자식 클래스 객체를 담을 수 있습니다.
예시:
// 다형성 배열 예시 - Person[] people = new Person[2];
- people[0] = new Student();
- people[1] = new Teacher();
'Backend > Backend 관련 학습 내용' 카테고리의 다른 글
자바 API 활용 및 API 만들기 (2) | 2024.11.29 |
---|---|
추상클래스와 인터페이스의 등장 자바 최상위 클래스 Object (0) | 2024.11.29 |
Static과 JVM 모델 이해 (0) | 2024.11.29 |
객체지향 프로그래밍(OOP) (0) | 2024.11.29 |
인텔리제이 단축키 (0) | 2024.11.29 |