extends 키워드를 이용하여 부모 클래스를 상속 받기public class Child extends Parent { }
Person person = new Person();
Student student = new Student();
Teacher teacher = new Teacher();
super 키워드를 이용하며 부모 생성자 호출super(); 추가됨super 키워드 이용하여 생성자 명시적으로 호출할 때 반드시 생성자 첫 번째 줄에 작성되어야 한다.super()와 this()는 같이 호출하지 못한다.public class Person {
private String name;
private int age;
// public Person() {
// }
// 기본(빈) 생성자 없는 경우 에러 발생
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Student extends Person {
private String major;
public Student(String major) {
super(); // 자동 추가, 부모 클래스의 Person의 파라미터 없는 생성자 실행
this.major = major;
}
public Student(String name, int age) {
super(name, age);
}
}
자식 클래스에서 부모 클래스로부터 상속 받은 메소드를 재정의
private로 선언되어 있는 경우private 키워드는 다른 클래스에서의 접근을 막는다.final 키워드로 선언되어 있는 경우final 키워드final 클래스public final class Example {
// ...implementation
}final 메소드public class Parent {
public final void parentMethod() {
// ...implementation
}
}
//////
public class Child extends Parent {
public void parentMethod() {
// ...new implementation
} // ERROR: cannot override `final` method
}final 변수final int age = 25;
// ...
age = 25; // ERROR: cannot change value of a final variable어노테이션 (Annotation)
- 컴파일러가 검증해야 하는 부가 정보 추가
- 필요한 데이터를 쉽게 활용할 수 있도록 소스 코드에 메타 데이터 작성
@로 시작하며 일종의 주석
@Override
- 해당 메소드가 부모 클래스 메소드를 오버라이딩한다는 것을 나타냄
@Override어노테이션을 사용한 메소드가 오버라이딩 된 메소드가 아닐 경우 컴파일러는 에러를 뱉음
super 키워드 이용public class Child extends Parent {
public void do() {
super.do();
System.out.println("I'm a child.");
}
}
Object ClassJava의 최상위 부모 클래스
extends 키워드로 다른 클래스를 상속하지 않은 클래스는 암시적으로 Object 클래스를 상속
필드가 없고 메소드만으로 구성
toString()과 같은 유용한 메소드 제공
객체의 정보를 String으로 제공
모든 클래스에서는 toString() 메소드를 오버라이딩하여 객체에 대한 정보를 문자열로 변환 가능
public class Example {
// fields
private String name;
// methods
// ...
public String toString() {
return "이름: " + name;
}
}
public class ExampleTest {
public static void main(String[] args) {
Example ex = new Example("name!");
System.out.println(ex); // 객체명을 작성하면 `객체명.toString()`이 호출된다.
}
}
new 연산자 사용 불가// `Appliance` is an abstract class
Appliance app = new Radio();abstract 키워드 사용public abstract class Example {
// ...implementation
}
public abstract void test();
// no body, ends with semicolon
{ }(메소드 body)가 없는 메소드로, 반드시 ;로 끝나야 함