728x90
캡슐화
: 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것
- 객체의 본질적인 특성
- 외부의 접근으로 부터 보호
클래스(class)
: 객체 모양을 선언한 틀(캡슐화)
- 메소드(멤버 함수)와 필드(멤버 변수)는 모두 클래스 내에 구현
객체
- 클래스의 모양대로 생성된 실체(instance)
- 객체 내 데이터에 대한 보호, 외부 접근 제한
상속
: 상위 개체의 속성이 하위 개체에 물려짐
하위 객체가 상위 개체의 속성을 모두 가지는 관계
- 자식 클래스가 부모 클래스의 속성을 물려받고 기능 확장 가능
- └ extends 키워드 사용
자바는 클래스 다중 상속은 없으며 인터페이스 다중 상속은 허용한다.
다형성
: 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현
- 다형성 사례
- 메소드 오버로딩 : 같은 이름이지만 다르게 작동하는 여러 메소드
- 메소드 오버라이딩 : 슈퍼클래스의 메소드를 서브 클래스마다 다르게 구현
절차 지향 프로그래밍과 객체 지향 프로그래밍
객체 지향 언어의 목적
- 소프트웨어 생산성 향상
- 컴퓨터 산업 발전에 따라 소프트웨어의 생명 주기(life cycle) 단축
- 객체 지향 언어
- 실세계에 대한 쉬운 모델링
- 컴퓨터 초기 시대의 프로그래밍
- 현대의 프로그래밍
- 객체 지향 언어
절차 지향 프로그래밍
- 작업 순서 표현
- 작업을 함수로 작성한, 함수들의 집합
객체 지향 프로그래밍
- 객체들간의 상호 작용으로 표현
- 클래스 혹은 객체들의 집합으로 프로그램 작성
클래스 구성
[ 접근 권한 | 클래스 선언 | 클래스 이름 ]
- 클래스 선언
- class 키워드로 선언
- { } 중괄호 내에 모든 필드와 메소드 구현
- 필드(field): 객체 내에 값을 저장하는 멤버 변수
- 메소드(method): 객체 내의 멤버 함수
- 접근 지정자: 필드나 메소드 앞에 붙어 다른 클래스의 접근 허용을 표시
- 생성자: 클래스의 이름과 동일한 특별한 메소드
- 객체가 생성될 때 자동으로 한 번 호출되는 메소드
객체 생성 및 접근
- 객체 생성
- new 키워드를 이용하여 생성
- 객체 생성 과정
- 객체에 대한 레퍼런스 변수 선언
- 객체 생성
- 클래스 타입 크기의 메모리 할당
- 객체 내 생성자 코드 실행
- 객체의 멤버 접근 방법
- 객체 레퍼런스.멤버
(1) 레퍼런스 변수 선언
(2) 객체 생성(new 연산자 이용)
(3), (4) 객체 멤버 접근
생성자
: 객체가 생성될 때 초기화를 위해 실행되는 메소드
💡 생성자 이름은 클래스 이름과 동일
💡 생성자는 리턴 타입 없음
생성자의 특징
- 생성자는 메소드
- 생성자 이름은 클래스 이름과 반드시 동일
- 생성자 여러 개작성 가능 오버로딩 (매개 변수의 개수 및 형태에 따라)
- 생성자는 new 를 통해 객체를 생성할 때 , 객체당 한 번 호출( 여러번 ❌)
- 생성자는 리턴 타입을 지정할 수 없음
- 생성자의 목적은 객체 초기화
- 생성자는 객체가 생성될 때 반드시 호출됨
- 그러므로 하나 이상 선언되어야 함
- └ 개발자가 생성자를 작성하지 않았으면 컴파일러가 자동으로 기본 생성자 삽입
💡 객체가 생성될 때, 필드를 초기화할 때, 원하는 메모리를 할당하고자 할때, 네트워크 연결을 한다거나 객체가 필요로하는 초기준비를 할때 생성자를 활용한다.
기본 생성자(default constructor)
- 클래스에 생성자가 하나도 선언되지 않은 경우 컴파일러에 의해 자동으로 삽입
- └ 매개 변수 없고 아무 작업 없이 단순 리턴하는 생성자(디폴트 생성자)
📢 개발자가 클래스내에 생성자를 하나라도 작성한 경우 기본 생성자는 자동 생성되지 않음! 매개변수가 있는 생성자를 만들고 따로 기본 생성자를 만들지 않았을 때 프로그램 내에서 기본 생성자를 호출하면 컴파일 오류가 발생한다.
this 레퍼런스
- this: 객체 자신에 대한 레퍼런스
- 컴파일러에 의해 자동 관리
- this.멤버
- this 의 필요성
- 객체의 멤버 변수와 메소드 변수의 이름이 같은 경우
- 다른 메소드 호출 시 객체 자신의 레퍼런스를 전달할 때
- 메소드가 객체 자신의 레퍼런스를 반환할 때
💡 객체의 치환 객체의 치환은 객체가 복사되는 것이 아닌 레퍼런스(참조)만 복사되는 것이다.
객체 배열
- 배열에 대한 레퍼런스 변수 선언
- 레퍼런스 배열 생성
- 배열의 각 원소 객체 생성
메소드
: 클래스의 멤버 함수 (C/C++의 함수와 동일)
- 자바의 모든 메소드는 반드시 클래스 안에 있어야 한다(캡슐화)
- 접근 지정자
- public
- private
- protected
- 디폴트(접근 지정자 생략된 경우)
- 리턴 타입
- 메소드가 반환하는 값의 데이터 타입
인자 전달 방식
- 기본 타입의 값 전달(Call by Value)
- 실인자 값은 변경 ❌
- 값이 복사
- 객체 혹은 배열 전달(Call by Reference)
- 객체나 배열의 레퍼런스만 전달
- 실인자 객체나 배열 공유
- 배열이 전달되는 경우
- └ 배열 통째로 전달 ❌
아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!
수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑
개발 환경
작성 플랫폼
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 |