728x90

캡슐화

: 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것

  • 객체의 본질적인 특성
    • 외부의 접근으로 부터 보호

클래스(class)

: 객체 모양을 선언한 틀(캡슐화)

  • 메소드(멤버 함수)와 필드(멤버 변수)는 모두 클래스 내에 구현

객체

  • 클래스의 모양대로 생성된 실체(instance)
  • 객체 내 데이터에 대한 보호, 외부 접근 제한

상속

: 상위 개체의 속성이 하위 개체에 물려짐

하위 객체가 상위 개체의 속성을 모두 가지는 관계

  • 자식 클래스가 부모 클래스의 속성을 물려받고 기능 확장 가능
    • extends 키워드 사용

자바는 클래스 다중 상속은 없으며 인터페이스 다중 상속은 허용한다.


다형성

: 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현

  • 다형성 사례
    • 메소드 오버로딩 : 같은 이름이지만 다르게 작동하는 여러 메소드
    • 메소드 오버라이딩 : 슈퍼클래스의 메소드를 서브 클래스마다 다르게 구현

절차 지향 프로그래밍과 객체 지향 프로그래밍

객체 지향 언어의 목적

  1. 소프트웨어 생산성 향상
    • 컴퓨터 산업 발전에 따라 소프트웨어의 생명 주기(life cycle) 단축
    • 객체 지향 언어
  2. 실세계에 대한 쉬운 모델링
    • 컴퓨터 초기 시대의 프로그래밍
    • 현대의 프로그래밍
    • 객체 지향 언어

 

절차 지향 프로그래밍

  • 작업 순서 표현
  • 작업을 함수로 작성한, 함수들의 집합

 

객체 지향 프로그래밍

  • 객체들간의 상호 작용으로 표현
  • 클래스 혹은 객체들의 집합으로 프로그램 작성

클래스 구성

[ 접근 권한 | 클래스 선언 | 클래스 이름 ]

  • 클래스 선언
    • class 키워드로 선언
    • { } 중괄호 내에 모든 필드와 메소드 구현
  • 필드(field): 객체 내에 값을 저장하는 멤버 변수
  • 메소드(method): 객체 내의 멤버 함수
  • 접근 지정자: 필드나 메소드 앞에 붙어 다른 클래스의 접근 허용을 표시
  • 생성자: 클래스의 이름과 동일한 특별한 메소드
    • 객체가 생성될 때 자동으로 한 번 호출되는 메소드

객체 생성 및 접근

  • 객체 생성
    • new 키워드를 이용하여 생성
  • 객체 생성 과정
    • 객체에 대한 레퍼런스 변수 선언
    • 객체 생성
      • 클래스 타입 크기의 메모리 할당
      • 객체 내 생성자 코드 실행
  • 객체의 멤버 접근 방법
    • 객체 레퍼런스.멤버

 

(1) 레퍼런스 변수 선언

(2) 객체 생성(new 연산자 이용)

(3), (4) 객체 멤버 접근


생성자

: 객체가 생성될 때 초기화를 위해 실행되는 메소드

💡 생성자 이름은 클래스 이름과 동일

 

💡 생성자는 리턴 타입 없음


생성자의 특징

  • 생성자는 메소드
  • 생성자 이름은 클래스 이름과 반드시 동일
  • 생성자 여러 개작성 가능 오버로딩 (매개 변수의 개수 및 형태에 따라)
  • 생성자는 new 를 통해 객체를 생성할 때 , 객체당 한 번 호출( 여러번 ❌)
  • 생성자는 리턴 타입을 지정할 수 없음
  • 생성자의 목적은 객체 초기화
  • 생성자는 객체가 생성될 때 반드시 호출됨
  • 그러므로 하나 이상 선언되어야 함
    • └ 개발자가 생성자를 작성하지 않았으면 컴파일러가 자동으로 기본 생성자 삽입

💡 객체가 생성될 때, 필드를 초기화할 때, 원하는 메모리를 할당하고자 할때, 네트워크 연결을 한다거나 객체가 필요로하는 초기준비를 할때 생성자를 활용한다.


기본 생성자(default constructor)

  • 클래스에 생성자가 하나도 선언되지 않은 경우 컴파일러에 의해 자동으로 삽입
    • └ 매개 변수 없고 아무 작업 없이 단순 리턴하는 생성자(디폴트 생성자)

📢 개발자가 클래스내에 생성자를 하나라도 작성한 경우 기본 생성자는 자동 생성되지 않음! 매개변수가 있는 생성자를 만들고 따로 기본 생성자를 만들지 않았을 때 프로그램 내에서 기본 생성자를 호출하면 컴파일 오류가 발생한다.


this 레퍼런스

  • this: 객체 자신에 대한 레퍼런스
    • 컴파일러에 의해 자동 관리
    • this.멤버
  • this 의 필요성
    • 객체의 멤버 변수와 메소드 변수의 이름이 같은 경우
    • 다른 메소드 호출 시 객체 자신의 레퍼런스를 전달할 때
    • 메소드가 객체 자신의 레퍼런스를 반환할 때

💡 객체의 치환 객체의 치환은 객체가 복사되는 것이 아닌 레퍼런스(참조)만 복사되는 것이다.

 

 


객체 배열

  1. 배열에 대한 레퍼런스 변수 선언
  2. 레퍼런스 배열 생성
  3. 배열의 각 원소 객체 생성

 


메소드

: 클래스의 멤버 함수 (C/C++의 함수와 동일)

  • 자바의 모든 메소드는 반드시 클래스 안에 있어야 한다(캡슐화)
  • 접근 지정자
    • public
    • private
    • protected
    • 디폴트(접근 지정자 생략된 경우)
  • 리턴 타입
    • 메소드가 반환하는 값의 데이터 타입

인자 전달 방식

  • 기본 타입의 값 전달(Call by Value)
    • 실인자 값은 변경 ❌
    • 값이 복사

  • 객체 혹은 배열 전달(Call by Reference)
    • 객체나 배열의 레퍼런스만 전달
    • 실인자 객체나 배열 공유

  • 배열이 전달되는 경우
    • └ 배열 통째로 전달 ❌

 

 


 

 

 

자바의 객체 지향적 특성

캡슐화

www.notion.so

 

아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

JAVA 이론 정리

주석 단축키 주석 처리하고 싶은 부분을 블록 처리하고 ‘Ctrl+Shift+ / ’를 누르면 /* */로 주석 처리가 됩니다. 주석을 해제하고 싶은 부분을 블록 처리하고 ‘ Ctrl+Shift+ \ (원 표시 혹은 역슬러시)

www.notion.so

 


개발 환경

Intellij

 

작성 플랫폼

Notion

 

728x90

'🧑‍💻 Language > Java' 카테고리의 다른 글

[Java] 7. 상속  (0) 2021.05.08
[Java] 6. 메소드 작성과 접근 지정자  (0) 2021.05.02
[Java] 4. 배열과 main() 메소드  (0) 2021.05.02
[Java] 3. 자바 기본 문법  (0) 2021.05.02
[Java] 2. 자바프로그래밍의 기본  (0) 2021.05.02