[JAVA] 4강 Overload & 캡슐화

KDH59·2024년 2월 4일
0

[JAVA]

목록 보기
4/13

생성자의 초기화

  • 생성자는 객체화 될 때 '초기화' 하는 수단으로 활용 된다.

  • 초기화는' 0을 만드는 것'이 아니고 '최초의 값'을 주는 것 이다.

  • Puppy 를 객체화 할 때 이름과 목적을 주어서 초기화 해 보자

[요약]

  1. 객체 화를 할 때 constructor(생성자) 라는 것을 호출 한다.

  2. Constructor 는 객체화 시에 최초로 불려진다.

  3. 이것을 이용 하면 객체 화 할 경우 초기화가 가능 하다.

  4. 초기화는 생성시 최초로 어떤 값을 입력 하는 것을 의미 한다.

자바는 매소드랑 생성자는 여러개 생성할수 있도록 허용해줌

Overroad

  • 같은 이름으로 여러개의 생성자를 만드는 것을 'overload' 라 한다

    단. 매개 변수의 개수나 형태가 달라야 한다.

public Puppy(String name, String goal) <- OK

public Puppy(String name) <- OK 매개변수 하나만 있으므로 가능

public Puppy(String goal) <- NO 같은 타입의 매개변수가 1개 있음으로 불가능 (위 타입과 생성자 이름 100%일치)

public Puppy() <- OK 기본생성자

[왜? 다양한 객체화를 지원하기 위해서..(누군가는 초기화를 하고싶지 않을수도, 이름만 넣고 싶을수도 있으니까)]

[왜? 해당 매개변수를 사용하는 매서드를 일일히 찾아야 되기 때문]

오버로드/오버라이드 둘이 다른 속성을 가지고 있다.

Method Overload

  • method 역시 overload 이 가능하다.

  • method overloading 이 필요한 이유는?

  1. 사용자 입장에서는 매개변수를 넣으면 해당 매서드로 자동 연결 된다.
  2. 만약 오버로드가 없었다면 해당 매개변수를 사용하는 매서드를 찾아야 한다.

static

static이 붙어있으면 원본 영역에 저장되어 존재한다. / 객체화 해서 복사가 안된다.

Static 은 언제 활용 하나

  • 하나의 내용을 공지하거나 원본을 다른사람이 회손 시키면 안되는 데이터가 들어있을때

final Keyword

  • final 은 한번 지정 되면 프로그램 종료 시 까지 변경이 불가능 하다. 읽기 전용

  • final 은 생성자에서만 초기화 가능 하다.

  • 선언 시

상수(constant)

  • Static final 의 경우 객체화 초기화가 되지 않아 불변의 값 으로 간주 한다.

  • 우리는 이런 필드를 상수(Constant) 라고 하며 모두 대문자로 표기 한다.

  • 상수는 소스단에서 입력되고 나서 프로그램에서는 절대로 바뀌어서는 안되는 값에 사용된다

★ static final은 어떻게 초기화 시키는가?

  • static final는 반드시 선언과 동시에 초기화시키거나 정적 블록 내에서 초기화


모든 상수는 -> utility 로 지칭

+: Public을 의미

__ : static을 의미

{readOnly} : final을 의미

대문자표시 : Static flnal를 의미

접근제한자

  • 남들이 사용할 수 있는 코드도 있지만 내부적으로만 사용할 코드가 있기 때문에

    매서드를 하나도 사용 할 수 없는 이유?

    -Java 에서는 접근을 허용 하거나 제한 할 수 있기 때문이다.

  • Calculator.java 의 member 들에게는 어떤 제한자를 붙여야 할까?

Public -> + 전체 사용 가능

protected -> # 사용 제한

default -> ~ 패키지 내 사용 가능

private -> - 클래스 내 사용 가능

캡슐화(Encapsulation)

  • 이렇게 특정 부분의 접근을 제한하는 것을 캡슐화(Encapsulation) 라고 한다.

    [개발자가 사용자의 실수를 막기 위해 접근 제한자로 접근을 막아주는 것을 캡슐화라고 함]

Private 은 외부 class 에서 사용이 불가능 하나 외부에서 꼭 써야 할 경우가 있다면 어떤 방법이 있는가.

  • getter.setter를 사용 하여 제공한다. (Alt + Shift + s)

[요약]

  1. 불러올 member 가 다른 package 에 있을 경우 import 문을 사용 한다.
  2. 모든 member 는 사용 할 수 있는 영역을 지정하는 접근 제한자 가 있다.
  3. Private 은 같은 클래스 내에서만 접근이 가능하다.
  4. public 은 다른 package 에서도 접근 가능 하다.

질문지

  1. 생성자가 어떤 역할을 하는지

  2. 초기화란?

  3. 생성자 오버로드란?

  4. 오버로드를 만들때 조건

  5. 오버로드를 사용하는 이유

  6. 생성자에서 매개변수를 사용할때 this 라는 표기값을 붙이는 이유

  7. 매소드 오버로드를 사용하는 이유

  8. 스택틱 영역이란?
    호출 방법?

  9. 파이널 스택틱 초기화 하는 방법

  10. 스택틱 영역에 저장되어야 하는 데이터들

  11. import는 언제 사용할는지. (패키지에 있는)

  12. 스택틱 맴버를 호출할때
    -클래스 명을 지정해야 된다.-

  13. 스택틱 맴버를 객체화 해서 접근이 가능한 이유는?
    객체 원본을 찾아 가도록 유도

14.final이란?

15.final static이란.

16 제한접근자 어디까지 사용 가능한지.

  1. 캡슐화란?

18 getter.setter를 사용 하는 이유

profile
[JAVA]

0개의 댓글

관련 채용 정보