Section 01. 객체지향 프로그래밍
객체지향 프로그래밍
- 데이터, 메서드를 포함하는 ‘객체’에 기반한 프로그래밍
- 유연성 ↑, 유지,관리의 가능성↑
- 데어터, 데이터의 동작(메서드)을 단일위치(객체)에 통합
객체지향 프로그래밍의 장점
- 개발 속도 향상
- 소프트웨어 유지,관리 향상
- 소프트웨어 개발의 생산성 향상
- 개발 비용 절감
객체지향 프로그래밍의 구성 요소
- 클래스 : 같은 종류의 집단에 속한 속성, 행동 정의한 틀
- 객체 : 클래스의 인스턴스
- 캡슐화 : 데이터와 행동을 하나의 단위로 묶는 기법
- 상속 : 존재하는 한 클래스의 멤버(변수, 메서드)를 다른 클래스에 물려주는 기법
- 다형성 : 변수, 메서드 또는 객체가 어떤 형태를 취하는 기법
- 추상화 : 불필요한 내부 세부 사항 숨기고, 필수 사항을 표시
캡슐화
- 데이터 수정 못 하고 안전하게 하기 위해.
- 캡슐화 규칙 → 클래스의 변수는 private 접근제한자로 선언 → 클래스의 변수에 접근할 수 있는 public 접근제한자로 선언한 Getter(), Setter()메서드 제공
상속
- 코드 재사용, 두 클래스 간 부모-자식 관계 설정하는 데 도움
- 부모 클래스( = 상위 = 슈퍼 = 기본)
- 자식 클래스( = 하위 = 서브 = 파생)
다형성
- 상속에 의해 서로 관련된 하나 이상의 클래스 또는 객체가 있을 때 발생
- 다형성 유형
- 메서드 오버로딩 : 메서드명 동일, 매개변수 다름
- 매서드 오버라이딩 : 상위의 메서드를 하위 클래스에서 재정의
추상화
- 불필요한 세부 정보 숨겨서 프로그래밍의 복잡성, 노력 줄임
- 추상화 하는 방법
- 추상 클래스 이용 : abstract 키워드로 선언
- 추상 메서드와 구체적인 메서드 포함 가능
- 인스턴스화 할 수 없음 → 추상 클래스의 객체를 만들 수 없음
- 다른 클래스에 상속해서 추상 메서드 자체를 구현해야 함
- 인터페이스 이용 : interface 키워드로 선언
- 클래스가 구현해야 하는 동작을 지정
- 다른 클래스에서 인터페이스 구현해야 함
- 추상 클래스 이용 : abstract 키워드로 선언
Section 02. 클래스와 객체
클래스 구현
- class 키워드 사용
- 본문은 중괄호
- 구성 요소 : 변수, 메서드 등
객체
- new 키워드 사용
- 클래스명 객체명 = new 클래스명(); // 객체 생성
- 클래스의 인스턴스, 클래스 자체의 복사본
- 특정 유형의 데이터를 유용하게 만드는 속성으로 구성
Section 03. 클래스의 구성 요소
클래스의 구성요소
멤버 변수
객체의 데이터, 메서드의 반환값, 상태 등을 저장되는 곳, field
// 객체명.멤버변수명;
멤버 메서드
객체 동작, 데이터 조작 이뤄지는 곳
선언부, 중괄호 안의 구현부로 구성.
1. 정적 메서드
static 키워드 선언, 객체 생성x 바로 사용
// 메모리 상에 항상 상주
// 잘 사용 x
2. 인스턴스 메서드
static 키워드x, 객체 생성해야만 사용
// 객체화 시켜서 접근하도록
- 생성자 : 객체 생성할 때 초기화되는 항목 관리
Section 04. 생성자
생성자
new 연산자 사용하여 호출되는 부분
클래스 객체 생성될 때 자동으로 호출, 객체 초기화에 이용되는 특수한 유형의 메서드
클래스명과 동일해야 함
기본 생성자 (default constructor)
매개변수가 없는 생성자
클래스 내 기본 생성자 정의 안 해도 됨
→ 안 하면 컴파일러가 자동으로 생성함
클래스명();
일반 생성자
매개변수가 있는 생성자
기본 생성자와 달리 생략할 수 x
클래스 멤버 변수 초기화에 사용 클래스명(매개변수1, 매개변수2, …);
생성자 오버로딩
생성자 이름 같지만, 매개변수가 다른 여러 생성자 정의
매개변수의 자료형, 개수가 다른 생성자 여러 개 있으나 생성자에 반환 자료형이 없음
this 이용한 생성자 체인
- this() 생성자 : 동일한 클래스 내의 서로 다른 생성자에서 오버로딩된 또 다른 생성자 하나 호출에 사용
- 생성자 체인(constructor chaining) : 동일한 클래스의 다른 생성자에서 하나의 생성자를 호출하는 프로세스
- 생성자는 다른 생성자에서만 호출할 수 있으므로 생성자 체인 필요 - 다른 생성자에서 생성자를 호출하기 위헌 this()는 현재 객체 참조에 사용
Section 05. 접근제한자
접근제한자
접근성 설정하는 데 사용되는 키워드. 다른 클래스의 클래스, 생성자, 데이터 멤버, 메서드의 접근 제한
- 정보 은닉의 캡슐화를 위해 접근제한자 사용
유형 | 같은 클래스 멤버 | 같은 패키지 멤버 | 자식 클래스 멤버 | 기타 영역 | 제한 범위 |
public | o | o | o | o | 모든 곳 접근 가능 |
protected | o | o | o | x | 패키지 및 모든 하위 클래스 내 |
선언x(default) | o | o | x | x | 동일한 패키지 내 |
private | o | x | x | x | 클래스 내 |
public 접근제한자
- 선언된 클래스 멤버(변수, 메서드, 생성자)
→ 다른 패키지든 어디든 직접 접근o
protected 접근제한자
- 클래스와 인터페이스에 사용x
- 다른 패키지의 하위 클래스에서 접근o
- 같은 패키지는 protected 선언된 하위 아니어도 접근o
private 접근제한자
- 가장 제한적. 외부 클래스로부터 접근 허용 않는 멤버(변수, 메서드, 생성자)에는 사용o but, 클래스와 인터페이스에는 사용x
- 필드. 메서드, 생성자는 엄격 제어 → 둘러싸는 클래스 외부에서 접근x
default 접근제한자
- 접근제한자 선언x
- 같은 패키지의 클래스 내 접근o
'Programming > JAVA' 카테고리의 다른 글
[JAVA] 9. 추상클래스와 인터페이스 (0) | 2023.10.23 |
---|---|
[JAVA] 8. 상속과 다형성 (0) | 2023.10.19 |
[JAVA] 6. 배열과 문자열 (1) | 2023.10.19 |
[JAVA] 2. 자료형 (0) | 2023.10.19 |
[JAVA] 1. 변수 (0) | 2023.10.19 |