Backend/Java

Java 생성자

호ㅁl 2022. 11. 7. 23:51

생성자

생성자 메소드 호출

  • 객체 생성에 관여한다.
  • 클래스를 처음 만들 때 멤버변수나 상수를 초기화하는데 사용한다.
  • 생성자 클래스는 생성할 때만 호출한다.
  • 생성자 이름은 클래스와 같고, 생성자는 반환값이 없다.
  • 멤버 변수에 대한 값들을 매개변수로 받아서 인스턴스가 새로 생성될 때 멤버변수 값들 초기화한다.
  • 생성자는 매개변수에 따라 여러개를 만들 수 있다.

 

디폴트 생성자

  • 생성자가 없는 클래스는 클래스 파일을 컴파일 할때 자바 컴파일러에서 자동으로 생성자를 만들어준다.
  • 자바 컴파일러는 생성자가 하나도 없는 경우에만 디폴트 생성자를 제공한다.
  • 매개변수와 구현코드가 없다.
  • 생성자 이름은 클래스 이름과 같다.
  • 생성자는 반환값이 없다.

 

생성자 만들기

 

  • this : 자기자신의 클래스(Constr)의 변수 'a' 에 '1000'을 담는다.
  • 생성자는 주로 멤버변수에 대한 값들을 매개변수로 받아서 인스턴스가 새로 생성될 때 멤버변수 값들을 초기화하는 역할을 한다.

 

public A() {   } - 생성자 메소드, 기본생성자 매개변수 없음.

기본형이 아닌 생성자는 생성자를 작성해야한다.

super 부모, 상위  상위클래스에 생성자를 호출해야 객체생성. 생성자의 첫번째줄에 무조건 있어야함.

작성이 안되어있어도 첫줄에 생략되어 있다.

 

 

 

★자바의 메모리 구조형

class : 클래스,변수,메소드 이름, 클래스에 대한 정보를 등록하는영역

stack : 메소드를 동작시키는 영역, 

heap : 객체생성 시키는 영역

 

static

  • static : 클래스소속
  • static 이 없는 경우 : 인스턴스 소속
  • 클래스로 정의된 변수나 메소드는 클래스를 통해서 접근가능하지만, 인스턴스로 정의된 변수나 메소드는 해당클래스의 인스턴스를 생성해야만 접근할 수 있다.
  • 인스턴스에서 해당 클래스로 정의된 변수를 수정하면 그 클래스를 퐘한 모든 인스턴스의 변수가 수정되지만, 인스턴스에서 해당 인스턴스로 정의된 변수를 수정하면 해당 인스턴스의 변수만 수정된다.

 

 

접근제어

public : 접근제어자, 메소드를 외부에서 사용하려고 할 때 접근사용여부를 제어하는 예약어

             어디에서든 접근허용

private : 접근제한, 외부에서 사용 불가능, class내부에서만 사용가능

default : 같은 폴더(패키지) 범위 내에서 사용

protected : 상속받은 패키지까지 사용가능