[국비 학원 기록/자바]객체지향(OOP) 03.생성자, 접근 제어 지시자, 캡슐화
my code archive
article thumbnail
반응형

생성자(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)

-꼭 필요한 정보와 기능만 외부에 오픈.

-대부분의 멤버변수와 메서드를 감추고 외부에 통합된 인터페이스만 제공하여 일괄된 기능을 구현하게 함,

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형