JAVA

[JAVA]12. 생성자

CodeJaram 2023. 6. 11. 14:23

1. 생성자

 

1)생성자 만들기

● 생성자는 하나 이상 선언되어야 함

● 생성자 이름은 클래스 이름과 동일해야 함

● 생성자는 리턴타입을 지정할 수 없다

   →리턴타입을 사용하지 않고 바로 메소드 이름을 쓴다.

● 생성자의 형태: 접근제한자 메소드 이름(매개변수){};

 

*자동생성방법: 우측 마우스-source-generate constructor using field

 

2)생성자 수행과정

● 연산자 new에 의해 메모리에 A클래스의 객체가 생성된다.

● 생성자는 new를 통해 객체를 생성할 때만 호출되어 수행된다.

   -생성자의 매개변수의 개수와 타입=main 객체 매개변수의 개수와 타입

  -객체 생성 시 생성자의 매개변수에 맞춰 매개변수를 입력한다.

 

● 연산자 new의 결과로 생성된 객체에 입력한 값을 필드값에 저장하는 역할을 함

● 필드에 있는 모든 값을 반드시 생성할 필요는 없으며, 객체에서 입력하기 원하는 값만

   생성자로 만들 수 있다.

 

2. 디폴트 생성자(기본생성자)

● 개발자가 생성자를 정의하지 않으면 자동으로 기본 생성자가 정의됨

● ()에 매개변수를 사용하지 않으면 디폴트 생성자가 됨

● 디폴트 생성자의 형태

   접근제한자 메소드명( ){ }

● 디폴트 생성자만 존재하고 디폴트에 아무런 기능이 없을 경우 생략가능함

 

3. 생성자에서 다른 생성자 호출하기(this)

접근제한자, 메소드명(매개변수){this.변수명 =변수명}

● 초기화할 변수가 많아지면 변수관리가 어려우므로 this 키워드로 변수명을 관리한다.

접근제한자, 메소드명(매개변수){this.변수명 =변수명}

this.변수명(필드)=변수명(매개변수)→매개변수의 값을 필드의 변수에 대입한다.

 

4. 캡슐화

● 개념: 필드의 정보를 외부로부터 접근하지 못하도록 제한하는 것

● 사용방법: 필드에서 변수 생성 시 자료형 앞에 private 입력

● 캡슐화된 필드 접근방법: 외부에서 공개된 메소드를 통해 필드에 접근

-public get 메소드 만들고 필드값을 return

-main에서 객체명.get메소드 입력하여 출력문으로 호출하기

 

● 캡슐화된 필드값 수정방법: 외부에서 공개된 메소드를 통해 필드에 접근, main에서 입력된

값을 매개변수에 저장함

-public set메소드 만들고 매개변수 입력, this.필드명 = 변수명 반환데이터 작성

-main에서 객체명.set메소드명(값) 값을 입력하면 변경된 값이 출력된다.

 

 

*생성자 오버로딩: 생성자의 이름이 같더라도 main객체에 쓴 매개변수의 타입과

개수에 따라 컴파일러를 통해 자동으로 적합한 메소드를 찾아 실행한다.

 

5. 접근제한자

● public: 같은 프로젝트 내에서 어디서든 접근 가능

● protected: 같은 패키지, 같은 클래스 내에서 접근 가능, 상속관계일 때는 다른 클래스에도

접근 가능하다.

● default(생략): 같은 패키지, 같은 클래스 내에서 접근 가능, 다른 패키지에서 접근 불가

● private: 내 클래스에서만 접근 가능

 

6. 상속

● 이미 작성된 클래스의 특성(변수, 메소드)을 새로운 클래스에 이어받아 생성하는 기법

-상위클래스(부모클래스, 슈퍼클래스): 이미 작성된 클래스

-하위클래스(자손클래스, 서브클래스): 새로운 클래스

 

● 장점: 기존 코드를 그대로 재사용하거나 재정의>재사용+확장

 

● 상속관계 설정방법

하위클래스 이름이 있는 코드에서 하위 클래스 뒤에 extends 상위클래스 입력, import

상속관계를 설정하면 상위클래스의 기능(메소드)을 하위클래스에서도 사용가능

>하위클래스에 상위클래스 메소드를 입력하지 않더라도 하위클래스.메소드 호출가능

'JAVA' 카테고리의 다른 글

[JAVA]14.디자인 패턴  (0) 2023.06.15
[JAVA]13.상속  (0) 2023.06.12
[JAVA]11. 객체지향 프로그래밍  (0) 2023.06.10
[JAVA]10. ArrayList  (0) 2023.06.09
[JAVA]9. 메소드  (0) 2023.06.08