
기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소이다.
class Parent {
// 상위 클래스
}
class Child extends Parent {
// 하위 클래스, Parent 클래스를 상속받는 Child 클래스
}
포함(composite)은 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것을 의미한다.
class Dot {
int a;
int b;
}
class Circle { // Circle 클래스에 int a, b가 있을 경우 Dot을 재사용함
Dot d = new Dot();
int c;
}
상위 클래스에서 상속 받은 메서드의 내용을 변경하는 것이다.
class Transportation {
void go(){
System.out.println("I'm going");
}
}
public class Bike extends Transportation {
void go(){
System.out.println("I ride a bike");
}
public static void main(String[] args){
Bike bike = new Bike();
bike.run();
}
}
// 출력 결과
// "I ride a bike"
상위 클래스의 객체를 호출하는 것이다.
class SuperExam {
public static void main(String[] args){
Child child = new Child();
child.test();
}
}
class Parent {
int a = 5;
}
class Child extends Parent {
int a = 10;
void test(){
System.out.println("a = " + a);
System.out.println("this.a = " + this.a);
System.out.println("super.a = " + super.a);
}
}
// 출력 결과
// a = 10
// this.a = 10
// super.a = 5
상위 클래스의 생성자를 호출하는 것이다.
public class Exam {
public static void main(String[] args){
Teacher t = new Teacher();
}
}
class Human {
Human(){
System.out.println("Human 클래스 생성자");
}
}
class Teacher extends Human{ // Human 클래스로 확장
Teacher(){
super(); // Human 클래스의 생성자 호출, 없을 경우 컴파일러가 생성자의 첫 줄에 자동으로 super()를 삽입
System.out.println("Teacher 클래스 생성자");
}
}
// 출력 결과
// Human 클래스 생성자
// Teacher 클래스 생성자
자바의 클래스 상속계층도에서 최상위에 위치한 클래스이다
class Parent { // 컴파일러가 "extends Object'를 자동적으로 추가
}
class Child extends Parent {
}
| 메서드명 | 반환타입 | 메서드 특징 |
|---|---|---|
| toString() | String | 객체 정보를 문자열로 출력 |
| equal(Object obj) | boolean | 등가 비교 연산과 동일하게 스택 메모리값을 비교 |
| hashCode() | int | 객체의 위치정보 관련. HashTable 또는 HashMap에서 동일 객체 여부를 판단 |
| wait() | void | 현재 쓰레드 일시정지 |
| notify() | void | 일시정지 중인 쓰레드를 재동작 |