객체지향 프로그래밍(7강 - 11강)
01 Dec 2019생성자, 생성자 오버로딩
생성자(Constructor)
- 객체를 생성할 때 new 키워드와 함께 호출
- 인스턴스를초기화 하는 코드가 구현됨(주로 멤버 변수 초기화)
- 변환 값이 없고 상속되지 않음
- 생성자는 클래스 이름과 동일
기본 생성자(Default constructor)
- 하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야 함
- 생성자를 구현하지 않으면 컴파일러가 생성자 코드를 넣어줌(기본 생성자)
- 기본 생성자는 매개 변수와 구현부가 없음
- 클래스에 다른 생성자가 있는 경우 기본 생성자는 제공되지 않음
생성자 오버로딩(Constructor overloading)
- 생성자를 두 개 이상 구현하는 경우
- 매개변수의 타입과 개수를 다르게 구현
- 사용하는 코드에서 여러 생성자 중 선택하여 사용
- private 변수도 생성자를 이용하여 초기화 가능
public class Student {
int studentID;
String name;
String address;
// 기본 생성자
public Student() {
}
public Student(int id, String name) {
studentID = id;
name = name;
}
}
참조 자료형(Reference data type)
참조 자료형
- 변수의 자료형
- 기본 자료형: int ,long ,float, double 등
- 참조 자료형: String, Date 등
- 클래스형으로 변수 선언
- String name;
- 기본 자료형은 사용하는 메모리가 정해져 있짐나 참조 자료형은 클래스에 따라 다름
// Subject.java
package test;
public class Subject {
String subjectName;
String subjectScore;
}
// Student.java
package test;
public class Student {
String stdeuntName;
int studentID;
Subject eng;
Subject math;
public Student(String name, int id) {
stdeuntName = name;
studentID = id;
eng = new Subject();
math = new Subject();
}
}
정보 은닉
접근 제어자(Access modifier)
- 변수, 메서드, 생성자에 대한 접근 권한 지정
- public: 모든 클래스에서 접근 가능
- private: 외부 클래스에서 접근 불가
- protected: 상위 클래스의 private 메서드/변수를 하위 클래스에 public하게 하고 싶을 때 사용
- 아무것도 안 쓰는 경우(기본 접근 제어자): 같은 패키지 내에서만 접근 가능
정보 은닉(Information hiding)
- 외부에서 클래스 내부의 정보에 접근하지 못하도록 private 사용
- private 변수를 외부에서 접근하게 하려면 public 메서드 제공하여 클래스 내부 데이터를 잘못 사용하는 오류 방지
this
this의 역할
-
자신의 메모리를 가리킴
- stack에 쌓인 this가 heap에 있는 메모리를 가리키게 됨
-
생성자에서 다른 생성자 호출
... public Person() { this("No name", 1); } public Person(String name, int age) { this.name = name; this.age = age; }
-
인스턴스 자신의 주소 반환