20230602 공부요약

라영진·2023년 6월 2일
0

Java 학습일지

목록 보기
6/35

지난 시간 복습내용
상속과 구성에 대한 CHAT GPT의 설명

상속과 구성은 객체 지향 프로그래밍에서 클래스 간의 관계를 표현하는 방법입니다. 이를 입문자가 쉽게 이해할 수 있도록 설명해 드리겠습니다.

상속은 클래스 간의 계층적인 관계를 나타냅니다. 한 클래스(하위 클래스 또는 자식 클래스)가 다른 클래스(상위 클래스 또는 부모 클래스)의 특성을 상속받아 사용하는 것을 말합니다. 상속을 통해 하위 클래스는 상위 클래스의 속성과 메서드를 그대로 물려받아 사용할 수 있습니다. 이를 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다. 예를 들어, "동물" 클래스가 있고 "고양이" 클래스가 "동물" 클래스를 상속받는다면, "고양이" 클래스는 "동물" 클래스의 특성인 다리의 개수, 소리를 낼 수 있는 등을 그대로 사용할 수 있습니다.

구성은 클래스가 다른 클래스의 객체를 포함하는 관계를 나타냅니다. 이를 통해 한 클래스가 다른 클래스를 사용하여 복잡한 기능을 구현할 수 있습니다. 구성은 "has-a" 관계로 표현되며, 한 클래스의 객체가 다른 클래스의 객체를 소유하고 있는 것을 의미합니다. 예를 들어, "자동차" 클래스가 "엔진" 클래스를 구성한다면, "자동차" 객체는 "엔진" 객체를 가지고 있습니다. 이렇게 구성을 사용하면 한 클래스의 변경이 다른 클래스에 영향을 주지 않고 독립적으로 관리할 수 있습니다.

간단히 말하면, 상속은 "is-a" 관계를 표현하며, 클래스 간의 계층 구조를 형성합니다. 구성은 "has-a" 관계를 표현하며, 클래스가 다른 클래스를 소유하여 기능을 확장합니다.

상속과 구성은 객체 지향 프로그래밍에서 중요한 개념으로, 클래스 간의 관계를 명확하게 표현하여 유연하고 재사용 가능한 코드를 작성하는 데 도움을 줍니다.

static- 공유 기능을 해줌

생성자- 객체의 초기화를 도와주는 함수

상속- 두 클래스의 관계 설정

구성- 상속의 단점 보완(코드의 중복을 해소시켜주는 방법)
(객체라는 걸 자세히 들여다볼 필요가 있음)

<Java Visualizer사이트>
코드가 1개씩 진행될때마다 메모리상황을 알려주는 사이트

객체지향 3요소(캡슐화,상속,다형성)

캡슐화 (Encapsulation):
캡슐화는 관련된 데이터와 메서드를 하나로 묶는 것을 의미합니다. 클래스는 데이터를 캡슐화하여 해당 클래스 내부에서만 접근할 수 있도록 보호합니다. 이를 통해 데이터의 무결성을 유지하고 외부에서의 무단 접근을 방지할 수 있습니다. 또한, 메서드를 통해 데이터에 접근하고 조작하는 인터페이스를 제공합니다.

상속 (Inheritance):
상속은 클래스 간의 계층적인 관계를 나타내는 기능입니다. 상위 클래스(부모 클래스)가 가지고 있는 속성과 메서드를 하위 클래스(자식 클래스)가 물려받아 사용할 수 있습니다. 상속을 통해 코드의 재사용성과 유지보수성이 향상됩니다. 자식 클래스는 상위 클래스의 특성을 확장하거나 변경하여 새로운 기능을 추가할 수 있습니다.

다형성 (Polymorphism):
다형성은 같은 이름의 메서드를 다양한 방식으로 동작하도록 하는 기능입니다. 서로 다른 클래스들이 동일한 메서드 이름을 가지고 있지만 각자의 특성에 맞게 구현될 수 있습니다. 다형성을 통해 코드의 유연성과 확장성이 증가합니다. 다형성은 상속과 함께 사용되는 경우가 많으며, 오버라이딩(Overriding)과 오버로딩(Overloading)을 통해 구현됩니다.

<접근제어자란>
클래스, 필드, 메서드, 생성자 등의 멤버에 대한 접근 권한을 제어하는 키워드입니다. 접근 제어자는 해당 멤버가 어디서 접근 가능하고 어디서 접근 불가능한지를 명시합니다.
public:(src내에 있는 전체)
public 접근 제어자는 가장 넓은 범위의 접근을 허용합니다. 해당 멤버는 어떤 클래스에서든 접근할 수 있습니다. 예를 들어, public으로 선언된 클래스는 다른 클래스에서 인스턴스를 생성하거나 해당 클래스의 메서드를 호출할 수 있습니다.

private:
private 접근 제어자는 가장 제한적인 범위의 접근을 허용합니다. 해당 멤버는 동일한 클래스 내부에서만 접근할 수 있습니다. 다른 클래스에서는 직접 접근할 수 없으며, 해당 클래스의 메서드를 통해 간접적으로 접근할 수 있습니다. 주로 정보 은닉과 캡슐화를 위해 사용됩니다.
(사유재산으로 이해하면 편함-동일한 클래스 내부에서 사용가능)

protected:
protected 접근 제어자는 같은 패키지 내에서와 상속 관계에 있는 하위 클래스에서 접근할 수 있습니다. 즉, 동일한 패키지에 속한 다른 클래스에서는 접근할 수 있지만 패키지가 다른 경우 접근이 제한됩니다. protected 멤버에 대한 접근은 상속을 통해 확장될 수 있습니다.

기본(default):
기본 접근 제어자는 별도의 키워드가 없이 접근 제어자를 생략한 경우를 말합니다. 기본 접근 제어자는 같은 패키지 내에서만 접근할 수 있습니다. 패키지가 다른 경우에는 접근할 수 없습니다.

접근제어자는 오류를 줄이기 위해 사용

객체 캡슐화하는 이유 외부에서 접근하거나 가져가야할 경우

세터와 게터로 세팅하고 가져와야함

[오늘 배운 캡슐화, 상속/구성, 다형성을 토대로 전사 캐릭터 만들어보기+]

profile
보더콜리 2마리 키우는 개발자

0개의 댓글