728x90
반응형
상속의 문제점
// 상속의 문제점
// - 현실 세계에 존재하는 다양한 대상들로부터 공통된 특징을
// 부모(상위)클래스로 정의한 후, 자식 클래스에서 재사용하는 문점
// 공통기능을 정의하고 있는 부모클래스
class Animal29 {
public void sound() {
System.out.println("소리를 냅니다.");
}
}
// 부모클래스의 기능을 상속받는 자식클래스
class Dog29 extends Animal29 {}
class Cat29 extends Animal29 {}
public class Class_29_Method_Overriding {
public static void main(String[] args) {
Dog29 d = new Dog29();
Cat29 c = new Cat29();
d.sound();
c.sound();
}
}
// 상속의 문제점
// - 현실 세계에 존재하는 다양한 대상들로부터 공통된 특징을
// 부모(상위)클래스로 정의한 후, 자식 클래스에서 재사용하는 문점
// 메소드 오버라이딩
// 부모클래스에서 물려받은 메소드는 모든 자식클래스에게 동일하게 적용됩니다.
// 이때, 자식 클래스는 부모클래스에서 물려받은 메소드를 자신의 용도에 맞게
// 재정의 할 수 있습니다.
// 부모클래스의 메소드를 재정의하는 문법으로 자식클래스에서
// 부모클래스의 메소드의 원형을 다시 한번 정의하는 문법입니다.
// 메소드 오버라이딩을 구현하면, 부모클래스에서 물려받은 메소드는 무시되고,
// 새롭게 정의한 메소드가 사용됩니다.
// 메소드의 정의 형식
// 접근지정자 리턴값의타입 메소드명(매개변수) {내용}
// 메소드의 원형 : 리턴값의타입, 메소드명, 매개변수
// 공통기능을 정의하고 있는 부모클래스
class Animal30 {
public void sound() {
System.out.println("소리를 냅니다.");
}
}
// 부모클래스의 기능을 상속받는 자식클래스
class Dog30 extends Animal30 {
// 메소드 오버라이딩
// - 부모클래스의 메소드를 자식클래스의 용도에 맞게
// 재정의하는 문법
public void sound() {
// 부모클래스의 오버라이딩된 메소드를 명시적으로 호출하기 위해
// super 키워드를 사용할 수 있습니다.
super.sound();
System.out.println("멍멍~");
}
}
class Cat30 extends Animal30 {
// 메소드 오버라이딩
// - 부모클래스의 메소드를 자식클래스의 용도에 맞게
// 재정의하는 문법
public void sound() {
// 부모클래스의 오버라이딩된 메소드를 명시적으로 호출하기 위해
// super 키워드를 사용할 수 있습니다.
super.sound();
System.out.println("야옹~");
}
}
public class Class_30_Method_Overriding {
public static void main(String[] args) {
Dog30 d = new Dog30();
Cat30 c = new Cat30();
d.sound();
c.sound();
}
}
728x90
반응형
'개발 > JAVA' 카테고리의 다른 글
자바 객체지향 (10) - 추상클래스 (0) | 2020.06.14 |
---|---|
자바 객체지향 (9) - 메소드 오버로딩, 상속과 메소드 오버라이딩 그리고 형변환, final 키워드 (0) | 2020.06.14 |
자바 객체지향(7) - 상속의 형변환, (0) | 2020.06.14 |
자바 객체지향(6) - 상속(확장), 클래스의 객체 생성 과정 AND상속관계를 구현하고 있는 클래스의 객체 생성 과정 (0) | 2020.06.14 |
자바 객체지향(5) - 싱글턴 패턴 (0) | 2020.06.14 |