포함, 클래스의 멤버로 다른 클래스 타입의 참조변수 선언하는 것.
상속관계 기준점 : ~(은)는 ~(을)를 가지고 있다(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- 붙임