Java_상속/캡슐화

Minki CHO·2022년 11월 6일
0

CodeStates

목록 보기
11/43

1. list

상속
캡슐화

2. list

1) 상속

-상속: 두 클래스를 상위 클래스와 하위 클래스로 나누고, 상위 클래스의 멤버(필드, 메서드, 이너클래스)가 하위 클래스에 공유되도록 하는 것
(하위 클래스의 멤버 수 >= 상위클래스의 멤버 수)

-'상속받았다' 라는 말 보다 '확장되었다'라는 말을 이용하쟈

-상속하는 이유
ⅰ. 코드 재사용으로 적은 양의 코드로 새로운 클래스를 작성하여 코드 중복을 제거할 수 있음
ⅱ. 다형적 표현 가능

-포함 관계 composite
: 상속처럼 클래스를 재사용하는 방법
: 클래스의 멤버로 다른 클래스 타입의 참조 변수를 선언함

-클래스간 관계 설정 시 고려할 점
: 클래스간 관계가 '~은 ~이다(IS-A)'인지 '~은 ~을 가지고 있다(HAS-A)'인지 확인 필요

-메서드 오버라이딩
: 상위 클래스로부터 받은 메서드와 동일한 이름의 메서드를 재정의하는 것

-메서드 오버라이딩 사용 시 조건
ⅰ. 메서드의 선언부(메서드 이름, 매개변수, 변환타입)이 상위 클래스의 선언부와 완전히 일치해야 함
ⅱ. 접근 제어자의 범위가 상위 클래스의 메서드와 같거나 넓어야함
ⅲ. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없음

-super 키워드 : 상위 클래스의 객체
-super() : 상위 클래스의 생성자 호출
-공통: 상위 클래스의 존재를 상정하며, 상속 관계를 전제로 함

2) 캡슐화

-캡슐화 : 특정 객체안에 있는 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것

-캡슐화를 하는 이유
ⅰ. 데이터 보호
ⅱ. 내부적으로만 사용해야 하는 데이터에 대한 불필요한 외부 노출 방지

-정보 은닉(data hiding)은 캡슐화의 가장 큰 장점임

3) 패키지

-패키지
: 특정한 목적을 공유하는 클래스와 인터페이스의 묶음
: 클래스들을 그룹 단위로 묶어 효과적으로 관리하기 위한 목적임

-패키지 기본 구조

//소스코드 맨 위에 작성
package 패키지명;

-패키지로 클래스를 묶는 것의 장점
:클래스의 충돌 방지
(현재 인텔리제이에서 한 패키지를 만들어 그 패키지 안에서 모든 예제를 돌렸다가, 클래스 이름 중복으로 인해 run 되지 않았던 적이 있어, 이를 해결하기 위해 이전 예제를 주석 처리하거나 새로운 패키지를 만들어 예제를 실행하고 있음)

-import문
: 다른 패키지 내의 클래스를 사용하기 위해 사용
: 패키지 구문과 클래스문 사이 작성

-import문 기본 구조

import 패키지명.클래스명;
import 패키지명.*; //해당 패키지의 모든 클래스 사용 가능해짐

4) 접근 제어자

-제어자
: 클래스, 필드, 메서드, 생성자 등에 부가적인 의미를 부여하는 키워드로 형용사 역할과 비슷함

-접근 제어자
: public, protected, default, private
: 접근 제어자 사용 시 클래스 외부로의 불편한 데이터 노출을 방지
: 외부로 부터 데이터가 임의로 변경되지 않도록 막을 수 있음

-접근 제어자 종류

접근 제어자 접근 제한 범위
private 동일한 클래스에서만 접근 가능
default 동일 패키지 내에서만 접근 가능
protected 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능
public 접근 제한 없음

-기타 제어자
: static, final, abstract, native 등

5) getter와 setter 메서드

-객체 지향의 캡슐화 목적을 달성하면서도 데이터 변경이 필요한 경우, getter와 setter 메서드를 사용함

-setter 메서드
: 외부에서 메서드에 접근하여 조건이 맞을 경우, 데이터 값을 변경 가능하게 함

set메서드명 

-getter 메서드
: 설정한 변수 값을 읽어올때 사용하는 메서드

profile
Developer

0개의 댓글