상속...
작성자 정보
- 작성자 최고관리자
- 작성일
컨텐츠 정보
- 조회 311
본문
상속(extends, Inheritance)
상속이란 자식 클래스(서브 클래스)에서 부모 클래스(슈퍼 클래스)의 필드와 메소드를 참조하여 쓸 수 있게 해준다. 기본적으로 하나의 클래스에 하나의 슈퍼 클래스밖에 상속 할 수 없다.
Ex.
위 소스코드에서 선언한 Car 클래스에는 getSpeed 메소드가 없지만 상속된 Vehicle에 getSpeed 메소드가 있기 때문에 사용 가능하다.
protected : 상속된 서브 클래스에서 protected 로 선언된 필드나 메소드를 public 처럼 사용할 수 있다.
오버 라이딩 (Override)
오버 라이딩 : 슈퍼 클래스에 존재하는 필드나 메소드를 서브 클래스에서 재정의하여 사용할 수 있다.
오버 라이딩을 통한 슈퍼 클래스를 생성할 때는 super 키워드를 사용한다.
Tip. 오버라이딩을 위해 필드나 메소드를 정의할 때 바로 위 상단에 @Override 문구를 넣어주면 오타를 방지할 수 있다. (슈퍼 클래스에 존재하지 않은 메소드를 오버라이드 하려고하면 컴파일 과정에서 에러 발생)
whatFood.java
아래 예제에서는 내장 메소드로 존재하는 toString() 메소드를 Override 했다.
EX...
Human.java
Student.java
Test.java (main)
상속이란 자식 클래스(서브 클래스)에서 부모 클래스(슈퍼 클래스)의 필드와 메소드를 참조하여 쓸 수 있게 해준다. 기본적으로 하나의 클래스에 하나의 슈퍼 클래스밖에 상속 할 수 없다.
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개
등록된 댓글이 없습니다.