JAVA 자료실

상속...

작성자 정보

  • 작성자 최고관리자
  • 작성일

컨텐츠 정보

본문

상속(extends, Inheritance)
상속이란 자식 클래스(서브 클래스)에서 부모 클래스(슈퍼 클래스)의 필드와 메소드를 참조하여 쓸 수 있게 해준다. 기본적으로 하나의 클래스에 하나의 슈퍼 클래스밖에 상속 할 수 없다.

Ex.

Class Vehicle {

    public int speed;
    
    public int getSpeed() {
        return speed;
    }
    public void setSpeed(int speed) {
        this.speed = speed;
    }
    
}



class Car extends Vehicle {

}

public class Test {

    public static void main(String[] args) {

        Car A = new Car();
        A.getSpeed();
    }
}


위 소스코드에서 선언한 Car 클래스에는 getSpeed 메소드가 없지만 상속된 Vehicle에 getSpeed 메소드가 있기 때문에 사용 가능하다.
protected : 상속된 서브 클래스에서 protected 로 선언된 필드나 메소드를 public 처럼 사용할 수 있다.

오버 라이딩 (Override)
오버 라이딩 : 슈퍼 클래스에 존재하는 필드나 메소드를 서브 클래스에서 재정의하여 사용할 수 있다.
오버 라이딩을 통한 슈퍼 클래스를 생성할 때는 super 키워드를 사용한다.
Tip. 오버라이딩을 위해 필드나 메소드를 정의할 때 바로 위 상단에 @Override 문구를 넣어주면 오타를 방지할 수 있다. (슈퍼 클래스에 존재하지 않은 메소드를 오버라이드 하려고하면 컴파일 과정에서 에러 발생)

whatFood.java
아래 예제에서는 내장 메소드로 존재하는 toString() 메소드를 Override 했다.

class Food {
    
    private int kcal;
    private int price;
    private int kg;
    
    public Food(int kcal, int price, int kg) {
        this.kcal = kcal;
        this.price = price;
        this.kg = kg;
    }

    @Override
    public String toString() {
        return "Food [kcal=" + kcal + ", price=" + price + ", kg=" + kg + "]";
    }
    
}



class Melon extends Food { //상속

    private String where;
    
    public Melon(int kcal, int price, int kg, String where) {
        super(kcal, price, kg);
        // TODO Auto-generated constructor stub
        this.where = where;
    }

    @Override
    public String toString() {
        return super.toString() + " Melon [where=" + where + "]";
    }
    
}



public class whatFood {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Melon mel = new Melon(100, 4000, 3, "Afganistan");
        System.out.println(mel.toString());
    }

}


EX...

Human.java

public class Human {
    private String name;
    private int age;

    public Human(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return "이름 : " + name + " 나이 : " + age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


Student.java

public class Student extends Human {
    private String major;

    public Student(String name, int age, String major) {
        super(name, age);
        this.major = major;
    }

    public String toString() {
        return super.toString() + " 전공 : " + major;
    }
}


Test.java (main)

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student stu1 = new Student("YoWu", 24, "Computer Science");
        System.out.println(stu1.toString());
    }

}

관련자료

댓글 0
등록된 댓글이 없습니다.
알림 0