본문 바로가기
Programming/JAVA

[JAVA] 7. 클래스와 객체

by 기딩 2023. 10. 19.
728x90

Section 01. 객체지향 프로그래밍

객체지향 프로그래밍

  • 데이터, 메서드를 포함하는 ‘객체’에 기반한 프로그래밍
  • 유연성 ↑, 유지,관리의 가능성↑
  • 데어터, 데이터의 동작(메서드)을 단일위치(객체)에 통합

객체지향 프로그래밍의 장점

  • 개발 속도 향상
  • 소프트웨어 유지,관리 향상
  • 소프트웨어 개발의 생산성 향상
  • 개발 비용 절감

객체지향 프로그래밍의 구성 요소

  • 클래스 : 같은 종류의 집단에 속한 속성, 행동 정의한 틀
  • 객체 : 클래스의 인스턴스
  • 캡슐화 : 데이터와 행동을 하나의 단위로 묶는 기법
  • 상속 : 존재하는 한 클래스의 멤버(변수, 메서드)를 다른 클래스에 물려주는 기법
  • 다형성 : 변수, 메서드 또는 객체가 어떤 형태를 취하는 기법
  • 추상화 : 불필요한 내부 세부 사항 숨기고, 필수 사항을 표시

캡슐화

  • 데이터 수정 못 하고 안전하게 하기 위해.
  • 캡슐화 규칙 → 클래스의 변수는 private 접근제한자로 선언 → 클래스의 변수에 접근할 수 있는 public 접근제한자로 선언한 Getter(), Setter()메서드 제공

상속

  • 코드 재사용, 두 클래스 간 부모-자식 관계 설정하는 데 도움
  • 부모 클래스( = 상위 = 슈퍼 = 기본)
  • 자식 클래스( = 하위 = 서브 = 파생)

다형성

  • 상속에 의해 서로 관련된 하나 이상의 클래스 또는 객체가 있을 때 발생
  • 다형성 유형
  • 메서드 오버로딩 : 메서드명 동일, 매개변수 다름
  • 매서드 오버라이딩 : 상위의 메서드를 하위 클래스에서 재정의

추상화

  • 불필요한 세부 정보 숨겨서 프로그래밍의 복잡성, 노력 줄임
  • 추상화 하는 방법
    • 추상 클래스 이용 : abstract 키워드로 선언
      • 추상 메서드와 구체적인 메서드 포함 가능
      • 인스턴스화 할 수 없음 → 추상 클래스의 객체를 만들 수 없음
      • 다른 클래스에 상속해서 추상 메서드 자체를 구현해야 함
    • 인터페이스 이용 : interface 키워드로 선언
      • 클래스가 구현해야 하는 동작을 지정
      • 다른 클래스에서 인터페이스 구현해야 함

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
728x90

'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