포함, 클래스의 멤버로 다른 클래스 타입의 참조변수 선언하는 것.
상속관계 기준점 : ~(은)는 ~(을)를 가지고 있다(HAS-A)
관계인지 확인
public class Student {
int id;
String name;
Grade grade;
public Student(int id, String name, Grade grade) {
this.id = id;
this.name = name;
this.grade = grade;
}
void studentInfo() {
System.out.println(id + " " + name);
System.out.println(grade.years + " " + grade.room);
}
public static void main(String[] args) {
Grade grade1 = new Grade("3학년", "1반");
Grade grade2 = new Grade("2학년", "3반");
test t1 = new test(1, "김진우", grade1);
test t2 = new test(2, "강찬석", grade2);
t1.studentInfo();
t2.studentInfo();
}
}
class Grade{
String years, room;
public Grade(String years, String room){
this.years=years;
this.room=room;
}
}
위 방식은 Grade
클래스로 인스턴스 변수(years, room)를 묶어 Student
클래스 안에 참조 변수를 선언하는 방법으로 코드 중복 제거 및 포함관계로 재사용한다.
덮어쓰기
this
는 객체 자신, this()
메서드는 자신의 생성자 호출.super
키워드는 상위클래스 객체, super()
는 상위클래스 생성자 호출 의미this
와 유사최상위에 위치한다.
자바의 모든 틀래스는 object 클래스로부터 확장
컴파일 과정에서 아무 상속받지 않는 클래스에 자동적으로 extends object
추가해 object 클래스 상속받도록 함
자바 상속 계층도 최상위에 위치해 object 클래스의 멤버들을 자동 상속받아 사용 가능.
object
클래스의 대표적 메소드메소드명 | 반환타입 | 기능 |
---|---|---|
toString() | String | 객체 정보를 문자열로 출력 |
equals(Object obj) | boolean | 등가 연산(==)과 동일하게 스택 메모리값 비교 |
hashCode() | int | 객체의 위치 정보 반환 Hashtable or HashMap에서 동일객체 여부 판단 |
wait() | void | 현재 쓰레드 일시정지 |
notify() | void | 일시정지 중인 쓰레드 재동작 |
import
문 통해 다른 패키지 내 클래스 불러옴접근 범위
접근제어자는 대사에 단 한번만 사용 가능
클래스 외부로 불필요한 데이터 노출 방지
외부로부터 데이터의 임의 변경 방지
접근제어자 | 접근 제한 범위 |
---|---|
private | 동일 클래스 |
default | 동일 패키지내 |
protected | 동일 패키지 + 다른 패키지의 하위 클래스 |
public | 접근 제한 없음 |
setter
메소드set-
붙임getter
메소드get-
붙임