자바게 2020. 3. 26. 21:52

생성자란 만들어진 클래스를 호출하는 메소드의 일종이다.(일종의 함수)

 

생성된 클래스와 생성자

생성자를 생성하여 메인에서 생성자를 사용하여 객체를 생성 할 수 있다.

생성자는 디폴트 생성자와 일반 생성자로 나눌 수 있는데, 디폴트 생성자는 클래스에 내에 아무런 생성자도 없을 시 자동으로 생성되는 생성자이다.

디폴트 생성자는 객체를 생성 할 수 있지만, 아무런 값이 들어 있지않은채로 생성 된다.(어차피 초기화 해야된다는 말)

그러나 일반 생성자가 생성 되어있을 경우에는 디폴트 생성자는 자동으로 생성되지않는다.

그래서 디폴트 생성자를 사용하기 위해서는 위 그림과 같이 직접 기입해 넣어야 한다.

 

객체의 생성

위 그림과 같이 Bus(100); int 인자 생성자를 활용하여 객체 bus100 을 생성 했다.(생성된 객체,인스턴스는 heap 메모리에 위치한다.)

 

 

참조 자료형 클래스.

클래스 내부에 다른 클래스를 참조하는 변수를 넣어 다른 클래스에서 맴버 변수를 불러와서 사용하는 방법이다.

메인에서 학생 객체를 생성 후 학생 클래스의 참조변수를 활용하여 과목에 대한 변수값을 넣는 그림

학생 클래스에서 모든 과목에 대한 이름과 점수를 관리하게 되면 과목에 대한 변수까지 더해져 복잡해 질수 있기 때문에 과목 클래스를 새로만들어 참조 할 수 있는 변수를 활용하여 깔끔하게 보이게 만들었다.

 

위의 사진에는 저렇게 직접 맴버 변수에 값을 집어넣는 방식을 사용했는데, 보편적으로 직접 맴버 변수에 접근 하게 하는것은 보안의 위험도 있고 실수로 값을 잘못 기입했을경우 원하는 결과 값을 얻기 어렵다.

그래서 접근제어자 라는 것에 대해 알아본다.

 

접근 제어자

접근 제어자 설명
public 외부 클래스 어디에서나 접근 할 수 있다.
protected

같은 패키지 내부와 상속 관계의 클래스에서만 접근할 수 있고 그 외 클래스에서는 접근할 수 없다.

아무것도 기입하지 않을때 default이며 같은 패키지 내부에서만 접근할 수 있다.
private 같은 클래스 내부에서만 접근할 수 있다.

 

private 타입으로 설정한 맴버변수는 메인에서 직접 값을 초기화 할 수가 없다.

 

이름을 변경하는 메소드를 작성하여 메소드호출로 맴버변수에 이름을 넣을 수 있었다.

 

이렇게 메소드를 통해 간접적으로 변수값을 넣는것을 간접접근식 이라고 한다.

보편적으로 get(),set() 메소드를 사용하여 값을 넣고 불러오는 역할을 한다.

 

 

위의 사진과 같은 방법으로 get(), set() 메소드를 간편하게 만들 수 있다.