상속...
페이지 정보
작성자 최고관리자 작성일 70-01-01 09:00 조회 306 댓글 0본문
상속(extends, Inheritance)
상속이란 자식 클래스(서브 클래스)에서 부모 클래스(슈퍼 클래스)의 필드와 메소드를 참조하여 쓸 수 있게 해준다. 기본적으로 하나의 클래스에 하나의 슈퍼 클래스밖에 상속 할 수 없다.
Ex.
[code=php]
Class Vehicle {
public int speed;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
[/code]
[code=php]
class Car extends Vehicle {
}
public class Test {
public static void main(String[] args) {
Car A = new Car();
A.getSpeed();
}
}
[/code]
위 소스코드에서 선언한 Car 클래스에는 getSpeed 메소드가 없지만 상속된 Vehicle에 getSpeed 메소드가 있기 때문에 사용 가능하다.
protected : 상속된 서브 클래스에서 protected 로 선언된 필드나 메소드를 public 처럼 사용할 수 있다.
오버 라이딩 (Override)
오버 라이딩 : 슈퍼 클래스에 존재하는 필드나 메소드를 서브 클래스에서 재정의하여 사용할 수 있다.
오버 라이딩을 통한 슈퍼 클래스를 생성할 때는 super 키워드를 사용한다.
Tip. 오버라이딩을 위해 필드나 메소드를 정의할 때 바로 위 상단에 @Override 문구를 넣어주면 오타를 방지할 수 있다. (슈퍼 클래스에 존재하지 않은 메소드를 오버라이드 하려고하면 컴파일 과정에서 에러 발생)
whatFood.java
아래 예제에서는 내장 메소드로 존재하는 toString() 메소드를 Override 했다.
[code=php]
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 + "]";
}
}
[/code]
[code=php]
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 + "]";
}
}
[/code]
[code=php]
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());
}
}
[/code]
EX...
Human.java
[code=php]
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;
}
}
[/code]
Student.java
[code=php]
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;
}
}
[/code]
Test.java (main)
[code=php]
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());
}
}
[/code]
상속이란 자식 클래스(서브 클래스)에서 부모 클래스(슈퍼 클래스)의 필드와 메소드를 참조하여 쓸 수 있게 해준다. 기본적으로 하나의 클래스에 하나의 슈퍼 클래스밖에 상속 할 수 없다.
Ex.
[code=php]
Class Vehicle {
public int speed;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
[/code]
[code=php]
class Car extends Vehicle {
}
public class Test {
public static void main(String[] args) {
Car A = new Car();
A.getSpeed();
}
}
[/code]
위 소스코드에서 선언한 Car 클래스에는 getSpeed 메소드가 없지만 상속된 Vehicle에 getSpeed 메소드가 있기 때문에 사용 가능하다.
protected : 상속된 서브 클래스에서 protected 로 선언된 필드나 메소드를 public 처럼 사용할 수 있다.
오버 라이딩 (Override)
오버 라이딩 : 슈퍼 클래스에 존재하는 필드나 메소드를 서브 클래스에서 재정의하여 사용할 수 있다.
오버 라이딩을 통한 슈퍼 클래스를 생성할 때는 super 키워드를 사용한다.
Tip. 오버라이딩을 위해 필드나 메소드를 정의할 때 바로 위 상단에 @Override 문구를 넣어주면 오타를 방지할 수 있다. (슈퍼 클래스에 존재하지 않은 메소드를 오버라이드 하려고하면 컴파일 과정에서 에러 발생)
whatFood.java
아래 예제에서는 내장 메소드로 존재하는 toString() 메소드를 Override 했다.
[code=php]
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 + "]";
}
}
[/code]
[code=php]
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 + "]";
}
}
[/code]
[code=php]
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());
}
}
[/code]
EX...
Human.java
[code=php]
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;
}
}
[/code]
Student.java
[code=php]
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;
}
}
[/code]
Test.java (main)
[code=php]
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());
}
}
[/code]
댓글목록 0
등록된 댓글이 없습니다.