본문 바로가기
Java/Java 예습

[Java] 자바의 객체 예습 1-7 정리

by 박채니 2022. 1. 18.

안녕하세요, 코린이의 코딩 학습기 채니입니다.

Java 객체를 예습했던 내용을 정리한 포스팅입니다.

 

 객체 지향 프로그래밍 (Object Oriented Programming) : OOP

: 객체를 사용해서 프로그램을 작성하는 것

: 객체는 클래스에 의해 만들어짐

> C++ : 클래스에 의해 만들어진 변수를 객체라 함 (클래스형 변수명;)

> Java : 힙 메모리에 할당된 클래스에 의한 기억공간을 객체라 함.

클래스에 의한 변수는 레퍼런스[변수]라고 함 ( 클래스형 레퍼런스[변수] = new 클래스명(); )

 

 OOP의 4대 특징

º 추상화 (Abstraction)

: 프로그램에서 필요한 공통적인 기능 및 속성들을 추출하고, 불필요한 것을 제거하는 과정

중요한 건 내가 구현하고자 하는 프로그램이 어떤 프로그램인 지, 어떤 목적을 가지고 만드는 지 생각할 것!

 

º 캡슐화 (EnCapsulation)

: 변수(값 1개) ----> 배열 (같은 자료형의 값 여러 개) ----------> 구조체 (자료형이 다른 변수들의 묶음)

> 클래스 : 구조체 + 정보은닉 (접근에 제한을 설정)

> 캡슐화 : 클래스 안의 멤버변수(Field)에 클래스 밖에서는 접근 못하게 하는 것 → private가 원칙

 

º 상속 (Inheritance)

 

º 다형성 (Polymorphism)


생성자함수(Constructor)

: 객체가 힙에 할당될 때 객체 안에 만들어지는 필드의 초기화를 담당

: new할 때 실행되는 함수 (new할 때 초기값을 생성자 쪽으로 전달하면 됨)

: 생성자 함수가 전달된 초기값을 받아서 필드에 기록

 

메소드 (Method)

1) Getter 메소드 : 할당될 필드(인스턴스 변수) 에 기록된 값을 읽어서 요구하는 쪽으로 읽은 값을 넘기는 메소드 (객체 안에 있는 필드들)

2) Setter 메소드 : 할당될 필드 값을 변경하는 메소드, 바꿀 새 값을 전달 받아 해당 필드에 대입

3) 일반 메소드 : 다른 용도(기능)를 처리하기 위한 메소드

 

 

 클래스

[접근제한자] [예약어] class 클래스명 { }

- 접근제한자 : public, default(생략됨) ...

- 예약어 : final (종단, 끝), abstract (미완성된, 추상) ...

class 클래스명 { } default 클래스라고 함
해당 패키지 안에 있는 클래스들끼리만 import없이 사용 가능
public class 클래스명 { } 패키지 밖의 다른 클래스에서 사용하고자 할 경우
import 하면 사용 가능
public final class 클래스명 { } 종단 클래스라고 함 → 상속에 사용 못함
클래스의 기능 확장을 막기 위해 사용
public abstract class 클래스명 { } 추상 클래스 라고 함 → 미완성된 클래스
스스로 객체 생성 못하는 클래스
abstract 메소드가 있다면 상속을 통한 후손 클래스의 기능 구현으로 활용 가능한 클래스

 

멤버변수 : Field 작성

[접근제한자] [예약어] 자료형 변수명 [=초기값];

- 접근제한자 : - private(원칙!), ~ default (생략됨), # protected, + public

접근제한자
(-) private 클래스 안에서만 접근 가능
클래스 에서 접근 불가능 (getter, setter통해서 접근해야함)
(~) default package private(같은 패키지 안) 같은 패키지 안에 있는 다른 클래스들접근 가능
다른 패키지에 있는 클래스접근 불가능
(#) protected default의 범위 + 다른 패키지의 상속 받은 후손 클래스까지 접근 가능
후손 클래스 외의 다른 패키지에 있는 클래스접근 불가능
(+) public 공개를 의미함
패키지 안, 밖 모든 클래스접근 가능

- 예약어 : final (수정불가능), static, final static (static final) (정적 메모리 할당)

 

< 변수 >

멤버변수 (인스턴스 변수)

: 메모리 할당 시점 - new 라는 연산자를 통한 인스턴스 생성 시

: 소멸 시점 - 인스턴스 소멸시

 

클래스 변수 (공통적으로 사용하는 변수가 있을 때 사용)

: 클래스 영역에서 static이라는 키위드가 붙은 변수

: 메모리 할당 시점 - 프로그램 실행 시

: 소멸 시점 - 프로그램 종료 시

 

지역 변수

: 메모리 할당 시점 - 메소드 호출(실행) 시

: 소멸 시점 - 메소드 종료 시

 

생성자 함수 작성

1) public 이 원칙

2) 반환형 없음

3) 함수명은 반드시 클래스명과 같아야함

4) 오버로딩 가능함

> 같은 이름의 함수가 여러 개 작성되는 경우

> 반드시 매개변수를 다르게 구성해야 함

 

* 기본 생성자            public 클래스명 ( ) { }  → 매개변수 없는 생성자

: 클래스에 생성자가 없는 경우, 클래스 사용 시에 자바가상머신(JVM)이 자동으로 기본 생성자를 하나 만들어서 실행

: 클래스가 상속 되거나 (부모클래스), 또는 매개변수가 있는 생선자를 만들 경우에는 반드시 기본 생성자 작성해야 됨

 

* 매개변수 생성자            publc 클래스명 ( 자료형 변수명, 자료형 변수명 ...) { [this.]필드명 = 변수명; } 

: 객체 생성 시 (할당 시, new할 때) 원하는 초기값을 인스턴스 변수의 초기값으로 기록 원할 때 사용

: 생성 시 초기 값을 생성자를 통해 전달하면, 클래스명 레퍼런스 = new 생성자 (초기값: 전달값);

   → 생성자의 준비된 매개변수가 받아서 필드에 대입

 

< this 레퍼런스 >

: 생성자와 메소드 안에 무조건 존재함 (언제든 사용 가능)

: 할당된 객체를 가리킴

: this 함수 실행 시 전달되는 객체의 주소를 자동으로 받음. (레퍼런스. 메소드명();)

: this.필드명 : 현재 객체 안의 필드를 말함

 

메소드 작성

일반 메소드 : [접근제한자] [예약어] 반환자료형 메소드명 ( [자료형 매개변수명, ... ] ) {

                                        처리할 내용 작성

                                        return;     → void

                                        return 값;    → 값의 자료형

}

 

- 접근제한자 : + public, ~ default, # protected, - private

- 예약어 : static, final (상속 시 오버라이딩 불가), abstract (미완성된), synchronized (동기화 처리), static final (final static)

 

Setter : Set 메소드

public void set필드명 (자료형 매개변수명) {
   [this.]필드 = 매개변수;

}

객체 안의 필드 (인스턴스 변수)의 값을 변경하는 메소드

 

Getter : Get 메소드

public 반환자료형 get필드명 ( ) { 
    return [this.]필드;

}

필드에 기록된 값을 읽어 요구하는 쪽으로 넘기는 메소드 (필드 값 조회용)

 

'Java > Java 예습' 카테고리의 다른 글

[Java] 자바의 객체 Part.2 예습_2  (0) 2022.01.20
[Java] 자바의 객체 Part.2 예습_1  (0) 2022.01.20
[Java] 자바의 객체 예습_7  (0) 2022.01.18
[Java] 자바의 객체 예습_6  (0) 2022.01.18
[Java] 자바의 객체 예습_5  (0) 2022.01.18