생성자는 객체화 될 때 '초기화' 하는 수단으로 활용 된다.
초기화는' 0을 만드는 것'이 아니고 '최초의 값'을 주는 것 이다.
Puppy 를 객체화 할 때 이름과 목적을 주어서 초기화 해 보자
[요약]
객체 화를 할 때 constructor(생성자) 라는 것을 호출 한다.
Constructor 는 객체화 시에 최초로 불려진다.
이것을 이용 하면 객체 화 할 경우 초기화가 가능 하다.
초기화는 생성시 최초로 어떤 값을 입력 하는 것을 의미 한다.
자바는 매소드랑 생성자는 여러개 생성할수 있도록 허용해줌
같은 이름으로 여러개의 생성자를 만드는 것을 '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 overloading 이 필요한 이유는?
static이 붙어있으면 원본 영역에 저장되어 존재한다. / 객체화 해서 복사가 안된다.
final 은 한번 지정 되면 프로그램 종료 시 까지 변경이 불가능 하다. 읽기 전용
final 은 생성자에서만 초기화 가능 하다.
선언 시
Static final 의 경우 객체화 초기화가 되지 않아 불변의 값 으로 간주 한다.
우리는 이런 필드를 상수(Constant) 라고 하며 모두 대문자로 표기 한다.
상수는 소스단에서 입력되고 나서 프로그램에서는 절대로 바뀌어서는 안되는 값에 사용된다
모든 상수는 -> utility 로 지칭
+: Public을 의미
__ : static을 의미
{readOnly} : final을 의미
대문자표시 : Static flnal를 의미
남들이 사용할 수 있는 코드도 있지만 내부적으로만 사용할 코드가 있기 때문에
매서드를 하나도 사용 할 수 없는 이유?
-Java 에서는 접근을 허용 하거나 제한 할 수 있기 때문이다.
Public -> + 전체 사용 가능
protected -> # 사용 제한
default -> ~ 패키지 내 사용 가능
private -> - 클래스 내 사용 가능
이렇게 특정 부분의 접근을 제한하는 것을 캡슐화(Encapsulation) 라고 한다.
[개발자가 사용자의 실수를 막기 위해 접근 제한자로 접근을 막아주는 것을 캡슐화라고 함]
[요약]
생성자가 어떤 역할을 하는지
초기화란?
생성자 오버로드란?
오버로드를 만들때 조건
오버로드를 사용하는 이유
생성자에서 매개변수를 사용할때 this 라는 표기값을 붙이는 이유
매소드 오버로드를 사용하는 이유
스택틱 영역이란?
호출 방법?
파이널 스택틱 초기화 하는 방법
스택틱 영역에 저장되어야 하는 데이터들
import는 언제 사용할는지. (패키지에 있는)
스택틱 맴버를 호출할때
-클래스 명을 지정해야 된다.-
스택틱 맴버를 객체화 해서 접근이 가능한 이유는?
객체 원본을 찾아 가도록 유도
14.final이란?
15.final static이란.
16 제한접근자 어디까지 사용 가능한지.
18 getter.setter를 사용 하는 이유