// 하나의 파일에 여러 개의 class를 만들 수 있다.
// public은 1개만 가능, 파일 이름과 일치해야 한다.
public class A {
B b; // 멤버 변수로 갖고 있다. -> A 는 B와 연관된다.
C c; // 양방향 연관 : A와 C는 서로 연관된다.
D[] d; // 집합 : A는 D의 집합을 갖고 있다. A는 D 없이도 존재 가능 (StudentManager, Student)
E[] e; // 구성 : A는 E로 구성된다. A는 E가 없으면 존재가 불가능하다. +
// 의존 : A class 가 갖고 있는 건 아니지만, 사용한다.
// A는 F에 의존한다.
void method() {
F f = new F();
f.Method();
}
}
class B {
}
class C {
A a;
}
class D {
}
class E {
}
class F {
void Method() {
System.out.println("F");
}
}
상위 클래스의 속성과 메서드를 물려 받아 확장하여, 새로운 자식 클래스를 정의하는 것
public class Student extends Person
→ 기존의 설계도를 확장하여 Student 라는 설계도를 생성한다는 것이다.


extends Object 가 생략 super 키워드 : 조상 클래스의 생성자 호출 
@Override 어노테이션 사용으로 좀 더 명확하게 나타낼 수 있다. //Person class - 부모
void eat() {
System.out.println("음식을 먹습니다.");
}
// Student class - 자식
@Override
void eat() {
System.out.println("점심을 먹습니다.");
}
@Override
void eat(int a) {
System.out.println( a + "번 먹습니다.");
}
오류 발생 :
The method eat(int) of type Student must override or implement a supertype method
toString 메서드
기본 return 값 : getClass().getName() + "@" + Integer.toHexString(hashCode());
equals 메서드
기본 return 값 : this == obj;
String 에서 사용할 때