생성자
- 객체를 생성할 때 new키워드와 함께 사용 ex) new Student();
- 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new와 함께 호출 됨
- 객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출함
- 생성자는 반환 값이 없고, 클래스의 이름과 동일
- 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private으로 선언되는 경우도 있음.
//생성자 만들기
public Student(int studentNumber, String studentName, int grade) {
this.studentNumber = studentNumber;
this.studentName = studentName;
this.grade = grade; }
Student studentLee = new Student(12345,"Lee",3);
여러가지 생성자를 정의하는 생성자 오버로딩 (overloading)
- 생성자를 구현해서 사용할 수 있음
- 클래스에 생성자를 따로 구현하면 기본 생성자(default constructor)는 제공되지 않음
- 생성자를 호출하는 코드(client 코드)에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음
public class UserInfo {
public String userId;
public String userPassword;
public String userName;
public String userAddress;
public String phoneNumber;
//기본 생성자
public UserInfo(){}
//생성자
public UserInfo(String userId, String userPassWord, String userName){
this.userId = userId;
this.userPassword = userPassWord;
this.userName = userName;
}
//메서드
public String showUserInfo() {
return "고객님의 아이디는 " + userId + "이고, 등록된 이름은" + userName + "입니다.";
}
}
public class UserInfoTest {
public static void main(String[] args) {
//기본생성자에 넣기
UserInfo userLee = new UserInfo();
userLee.userId = "a12345";
userLee.userPassword = "adksjglawemg";
userLee.userName = "Lee";
userLee.phoneNumber = "0102093202";
userLee.userAddress = "Seoul, Korea";
System.out.println(userLee.showUserInfo());
//만들어준 생성자에 넣기
UserInfo userKim = new UserInfo("bq2352","325asdgh","Kim");
System.out.println(userKim.showInfo());
}
}
*오버로딩과 오버라이딩 차이
라이딩 : 재정의 / 로딩 : 확장
오버로딩(overloading)은 이름은 같지만 시그니처(파라미터 수, 타입) 에는 다른 메소드를 중복으로 선언하는 것
오버라이딩(overriding)은 부모 클래스의 메소드의 동작 방법을 변경(재정의)하여 우선적으로 사용하는 것
오버라이딩은 쉽게 말해서 '메서드의 이름이 같고, 매개변수가 같고, 반환형이 같은 경우에 상속받은 메서드를 덮어쓴다'
자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외한 모든 메소드를 상속받습니다.
반응형
'JAVA > Java' 카테고리의 다른 글
캡슐화(encapsulation) (0) | 2023.03.14 |
---|---|
접근 제어 지시자(access modifier)와 정보은닉(information hiding) (0) | 2023.03.14 |
인스턴스와 힙 메모리 (0) | 2023.03.14 |
함수와 메서드 (0) | 2023.03.14 |
기본 자료형 vs 참조 자료형 (0) | 2023.03.13 |
댓글