-
학습 목표
사용자 정의 생성자
기본 생성자
생성자 오버로딩 이라는 의미를 이해하자생성자
new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다.
객체 생성할 경우 이외에는 호출할 수 없고, 멤버 변수 초기화 등 인스턴스를 초기화 하는 코드가 구현된다.
생성자 이름은 클래스 이름과 동일하고 반환 값이 없으며 상속되지 않는다.
private 변수는 다른 클래스에서는 호출할 수 없지만 생성자를 호출할 경우 초기화가 가능하다.
기본생성자 public Student(){}
클래스에는 반드시 적어도 하나 이상의 생성자가 존재한다.
클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음
클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 줌
public class Student { public int studentNumber; public String studentName; public int grade; public Student(int studentNumber, String studentName, int grade) { this.studentNumber = studentNumber; this.studentName = studentName; this.grade = grade; } public String showStudentInfo() { return studentName + "학생의 학번은 " + studentNumber + "이고, " + grade + "학년 입니다."; } }
public class StudentMainTest { public static void main(String[] args) { //Student studentLee = new Student(); Student studentLee = new Student(12345, "Lee", 3); String data = studentLee.showStudentInfo(); System.out.println(data); } }
위의 소스코드를 볼때 Student studentLee = new Student(12345, "Lee" , 3)로 객체를 생성한것을 볼수있다.
객체를 생성할려면 생성자가 반드시 존재해야 되는데 위의 public Student가 그 역할을 해준다.
this는 자기자신을 가리키며 메소드와 비슷한 개념으로 호출될때 각각 학생의 이름, 학생의 학번 ,학생의 학년의 값이 자기자신 변수안에 그 값을 가지게 된다. 그값을 showStudentInfo 생성자에 정리하여 출력이 될수 있게 기능을 만들었고, main함수에서 String date 변수안에 담아 변수이름 date를 출력시 showStudentInfo 생성자안에 담은 기능이 구현되는걸 알수있다.여러가지 생성자를 정의하는 생성자 오버로딩
학번,이름을 받는 생성자를 이전에 만들었는데, 해당 생성자가 아닌 학번 또는 이름만 입력 받거나 전부 다 입력받는 생성자를 만들고자 할 때 생성자 명은 클래스 명과 동일하기 때문에 매개 변수가 다른 똑같은 이름의 생성자를 여러개 만들어 줘야 한다. 이처럼 생성자를 두개 이상 구현하는 경우를 생성자 오버로딩이라고 한다.
package ch06; public class Student { int studentID; //학번 String studentName; //이름 String address; //주소 public Student(int id,String name) { //생성자 생성 studentID = id; studentName = name; } public Student(String name) { //생성자 생성 studentName = name; } }
package ch06; public class StudentTest { public static void main(String[] args) { Student studentPark = new Student(1234,"홍길동"); Student studentKim = new Student("장길산"); } }
위에 소스 코드를 보면 내가 장길산이란 학생의 이름만 가져오고 싶을때 생성자를 만들어서 구현하는것을 알수있다.
생성자는 new 키워드를 사용했을때 사용된다.
만약 생성자가 하나도 없는경우 컴파일러에서 생성자 코드를 넣어준다.
생성자 오버로딩
생성자를 두개 이상 구현하는 경우를 생성자 오버로딩이라고 한다.
'Java' 카테고리의 다른 글
접근 제어 지시자 (0) 2023.02.13 객체와 객체간에 상호작용 (0) 2023.02.12 함수와 스택 메모리 (0) 2023.02.12 함수(function) (0) 2023.02.12 객체 지향 언어 (0) 2023.02.12