본문 바로가기

JAVA

상속, 오버라이딩

상속이란?

- 기존의 클래스를 재활용해서 새로운 클래스를 작성하는 것.

- 상속을 통해 연관된 일련의 클래스에 대한 공통적인 규약을 정의하고 적용하는데, 상속의 실질적인 목적이 있다.

 

오버라이딩이란?

- 상위 클래스에 정의된 메소드의 이름, 반환형, 매개변수 선언까지 완전히 동일한 메소드를 하위 클 래스에서 다시 정의하는 것!

- 즉, 상위 클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것이다.

- 하위 클래스에 정의된 메소드에 의해 상위 클래스의 메소드는 가리워진다.

 

예제 1.

//부모(조상,super) 클래스: 원본이 되는 클래스

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

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

public void sleep() {
System.out.println("사람은 보통 8시간 잔다.");
}
public void eat() {
System.out.println("사람은 음식을 먹는다.");
}
public void showInfo() {
System.out.println("name:"+name);
System.out.println("age:"+age);
}
}

 

 

//자식(후손,sub,파생) 클래스 : 상속을 하는 클래스
public class Student extends Person{
//String name
//int age
//sleep()
private int sNo;
private int kor;

public Student() {}

//상속<정보은닉 :상속보다 private가 우선되어서 자식 클래스에선 부모 클래스의 private 선언한 변수에 접근 할 수 없다. 
public Student(String name, int age, int sNo, int kor) {
super(name,age); //Person();이 숨어있다. 자식 클래스의 생성자 첫줄에는 super()가 숨어있다.
this.sNo=sNo;
this.kor=kor;
}
public void sleep() {//오버라이딩
System.out.println("학생은 6시간 잔다.");
}

public void study() {
System.out.println("학생은 공부를 한다.");
}

public void showInfo() {//메소드 오버라이딩(재정의)  
super.showInfo(); //name,age  //부모 클래스의 showInfo()를 실행한다.
System.out.println("sNo:"+sNo);
System.out.println("kor:"+kor);
}
}

 

 

'JAVA' 카테고리의 다른 글

컬렉션 프레임워크  (0) 2019.11.11
제네릭(Generics)  (0) 2019.11.11
Object  (0) 2019.11.08
예외처리  (0) 2019.11.06
인터페이스  (0) 2019.11.06