생성자(Constructors)
-모든 클래스는 반드시 최소한 하나의 생성자가 있어야 함.
-객체를 생성할 때 new 키워드와 함께 사용함.
-생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new와 함께 호출됨.
-객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출함.
-생성자는 반환값이 없고 생성자 이름은 클래스 이름과 동일함.
-대부분의 생성자는 외부에서 접근 가능하지만(public) 필요에 따라 private으로 선언되는 경우도 있다.
기본 생성자(default constructor)
-클래스에 반드시 적어도 하나 이상의 생성자는 존재해야 한다.
-클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음.
-클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어준다.
-매개변수, 구현부가 따로 없다.
<예제 1.>
Student 클래스 생성,
private로 인스턴스 멤버변수 선언.
private로 선언된 변수는 getter/setter로 접근할 수 있다.
Source 메뉴 => Generate Getter and Setter 클릭 후
원하는 멤버 변수 체크하여 getter, setter를 자동완성하면 됨.
ctrl+space를 눌렀을 때
기본 생성자,
매개변수가 있는 생성자 2개가 호출된다.
기본 생성자를 호출하면 초기값이 출력된다.
int의 초기값은 0,
String 문자열의 초기값은 null.
<예제2>
Car 클래스 생성,
기본 생성자 & 매개변수가 있는 생성자 생성.
결과를 보면
이렇게 출력된다.
car3은 car1을 복사한 것이고 car4는 car2를 복사한 것인데
이렇게 for문을 사용해서 원하는 만큼 복사할 수도 있다.
this() 와 this
1.this() : 생성자에서 다른 생성자 호출, 다른 생성자 호출은 첫 문장에서만 사용 가능함.
같은 클래스 내에서 다른 생성자를 호출할 때 사용함.
2.this : 참조 변수와 같은 역할(자기 자신을 가리킴), 매개 변수와 인스턴스멤버변수를 구분짓는데 사용.
접근 제어 지시자(Access Modifier)
-클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드.
-멤버변수는 private으로 접근제어자를 설정하고(캡슐화)
각 멤버변수에 해당하는 getter()를 제공해주는 방법으로 클래스를 작성함.
-private : 같은 클래스 내부에서만 접근 가능(외부 클래스, 상속 관계의 클래스에서도 접근 불가)
-protected : 같은 패키지나 상속 관계의 클래스에서만 접근 가능함.
-아무것도 없음(default) : 같은 패키지 내부에서만 접근 가능
-public : 클래스 외부 어디서나 접근 가능
정보 은닉과 캡슐화
1. 정보 은닉
-객체 지향 프로그래밍에서 정보 은닉은 필요한 외부에서 접근 가능한
최소한의 정보를 오픈함으로써 객체의 오류를 방지하고
클라이언트 객체가 더 효율적으로 객체를 활용할 수 있도록 해준다.
2. 캡슐화(encapsulation)
-꼭 필요한 정보와 기능만 외부에 오픈.
-대부분의 멤버변수와 메서드를 감추고 외부에 통합된 인터페이스만 제공하여 일괄된 기능을 구현하게 함,
'📒 education archive > 🎀JAVA' 카테고리의 다른 글
[국비 학원 기록/자바]객체지향(OOP) 04.변수의 종류, 정적(static)변수, 지역변수, 멤버변수 (0) | 2021.10.10 |
---|---|
[국비 학원 기록/자바] 랜덤으로 52장 카드 뽑기 예제 (0) | 2021.10.08 |
[국비 학원 기록/자바]객체지향(OOP) 02.스택, 힙, 힙 메모리 (0) | 2021.10.05 |
[국비 학원 기록/자바]객체지향(OOP) 01.객체, 클래스, 인스턴스, 함수와 메서드 (0) | 2021.10.05 |
[국비 학원 기록/자바] 제어문, while문, do~while문, 예제 (0) | 2021.10.03 |