기존에 있던 클래스를 활용해서 새로운 클래스를 만드는 기술
class 자식클래스 extends 부모클래스 {
// 멤버 요소
}
다른 클래스를 상속하는 상위 클래스
다른 클래스의 멤버 요소를 상속받은 하위 클래스
부모 클래스의 멤버 요소 외에 추가적인 멤버 메서드와 변수도 사용 가능
class Animal {
void eat() {
System.out.println("먹이를 먹다.");
}
}
class Cat extends Animal {
void meow() {
System.out.println("야옹하고 울다.");
}
}
public class myClass {
public static void main(String[] args) {
Cat mycat = new Cat();
mycat.eat();
mycat.meow();
}
}
// 출력
먹이를 먹다.
야옹하고 울다.
이 코드를 통해서 자식 클래스는 부모 클래스의 모든 메서드와 변수에 자유롭게 접근 가능하다는 것을 알 수 있다
class Father {
String familyName = "프로그래머";
String houseAddress = "인천";
}
class Son extends Father {
String name="홍길동";
void printDetails() {
System.out.println("나의 이름은 "+this.name);
System.out.println("나의 아버지는 "+this.familyName);
System.out.println("나의 집은 "+this.houseAddress);
}
}
public class myClass {
public static void main(String[] args) {
Son a = new Son();
a.printDetails();
}
}
// 출력
나의 이름은 홍길동
나의 아버지는 프로그래머
나의 집은 인천
이 코드와 바로 직전 코드의 다른 점은 this이다
this 키워드는 현재 객체를 참조하는 데에 사용된다 즉, 메소드가 호출될 때 사용된 인스턴스를 말한다
그래서 this.name은 현재 Son 클래스의 인스턴스인 a의 name 변수를 가리키기 때문에 "홍길동"이 된다
this.familyName도 현재 Son 클래스의 인스턴스인 a에서 참조하는데, Son 클래스는 Father 클래스를 상속받았기 때문에 familyName 변수를 사용할 수 있다 따라서 "프로그래머"가 출력된다
this.houseAddress도 동일하다
클래스가 하나의 클래스에 상속하고
상속받은 자식 클래스가 또 다른 클래스에 상속하는 것
class Animal {
void eat() {
System.out.println("먹이를 먹다.");
}
}
class Cat extends Animal {
void meow() {
System.out.println("야옹하고 울다.");
}
}
class Kitten extends Cat {
void meow2() {
System.out.println("새끼 고양이가 야옹하고 울다.");
}
}
public class myClass {
public static void main(String[] args) {
Kitten myCat = new Kitten();
myCat.meow2();
myCat.meow();
myCat.eat();
}
}
// 출력
새끼 고양이가 야옹하고 울다.
야옹하고 울다.
먹이를 먹다.
여러 자식 클래스가 단일 부모 클래스로부터 상속되는 것
class Food {
void eat() {
System.out.println("음식을 먹다.");
}
}
class Pizza extends Food {
void orderPizza() {
System.out.println("피자를 주문하다.");
}
}
class Hamburger extends Food {
void orderHamburger() {
System.out.println("햄버거를 주문하다.");
}
}
public class myClass {
public static void main(String[] args) {
Pizza food1 = new Pizza();
Hamburger food2 = new Hamburger();
food1.orderPizza();
food1.eat();
food2.orderHamburger();
food2.eat();
}
}
자식 클래스가 부모 클래스를 참조할 때 사용하는 키워드
class Cat {
String breed="샴고양이";
String age = "15살";
void printInfo() {
System.out.println("부모 고양이입니다.");
}
}
class Kitten extends Cat {
String age="3살";
void printInfo() {
System.out.println("아기 고양이입니다.");
}
void printDetail() {
super.printInfo();
System.out.println("품종은 "+super.breed+", 나이는 "+super.age);
printInfo();
}
}
public class myClass {
public static void main(String[] args) {
Kitten myCat = new Kitten();
myCat.printDetail();
}
}
// 출력
부모 고양이입니다.
품종은 샴고양이, 나이는 15살
아기 고양이입니다.
부모 클래스의 생성자를 호출하는 명령어
자식 클래스이 생성자 첫 행에 이 명령어 있어야 함
부모 클래스에 매개변수 없는 생성자가 없다면 오류 발생