티스토리 뷰
반응형
* 본 포스팅은 인피니티 북스의 Power JAVA 2판을 참고하여 작성되었습니다.
* 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.
상속(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());
}
}
반응형
'개인공부 > JAVA' 카테고리의 다른 글
[Java Spring] 00. 스프링 개발 환경 구축과 프로젝트 생성 (0) | 2016.07.24 |
---|---|
Java 13 : PowerJava2 p.259 LAB 1 (0) | 2014.08.11 |
Java 11 : 배열(Array) (0) | 2014.08.11 |
Java 10 : 생성자와 정적 메소드 (0) | 2014.08.11 |
Java 09 : PowerJava2 p.192 LAB 1 (0) | 2014.07.30 |
Java 08 : 필드와 메소드 (2) | 2014.07.30 |
Java 07 : PowerJava2 p.169 LAB 1 (0) | 2014.07.30 |