상속의 대표적인 형태임
부모의 메서드를 그대로 사용할 수 있고, 오버라이딩 할 필요없이 부모에 구현되어있는 것을 바로 사용이 가능함
[예제]
// 부모 클래스
Class Animal {
public String getCrying() {
return crying;
}
public void setCrying(String crying) {
this.crying = crying;
}
}
// 자식 클래스 => 부모클래스 상속받음
class Dog extends Animal {
public void print() {
System.out.println(crying);
}
}
// 출력 클래스 => 자식클래스
public class AnimalCrying {
public static main(String[] args) {
Dog animal1 = new Dog();
System.out.println(animal1.getCrying());
animal1.print();
}
}
// Dog 클래스는 Animal을 상속 받았고, getCrying()
// 메서드로 crying을 print함
// animal의 getCrying메서드에서 crying을 직접
// 바로 사용했고, extends를 했으니 메서드 뿐만
// 아니라 변수까지 사용이 가능해 진 것!
[심플한 접근제어자 설명]
[유의]
인터페이스 상속에 사용됨
부모는 선언만 하며, 반드시 자식이 정의를 오버라이딩해서 사용함
[예제]
// 인터페이스
interface Printer {
public static String hello = "Hello";
public static String bye = "Bye";
public void hello();
public void bye();
}
// implements[상속]
class Person implements Printer {
@Override
public void hello() {
System.out.println(hello);
}
@Override
public void bye() {
System.out.println(bye);
}
}
// main method => 출력만 해주는 Test class
public class PersonTest {
public static main(String[] args) {
Person person = new Person();
person.hello(); // Hello
person.bye(); // Bye
}
}