Jump2Java 05장. 객체지향 프로그래밍
- 상속
- IS-A 관계
- 메소드 오버라이딩
- 메소드 오버로딩
상속
- 자식클래스 extends 부모클래스
- 자식클래스에 메소드 추가
// 자식클래스 extends 부모클래스
public class Dog extends Animal {
public void Sound() {
System.out.println(this.name + ": bark!");
}
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("Daengdaeng2");
System.out.println(dog.name);
dog.Sound();
}
}
/* 출력결과
Daengdaeng2
Daengdaeng2: bark!
*/
IS-A 관계
- 상속 받은 경우 상위-하위 개념이라고 할 수 있다.
- 예를 들어 Dog는 Animal의 하위 개념이다.
- 이런 경우 Dog is a(n) animal. 이라고 표현할 수 있기 때문에 IS-A 관계라고 한다.
- Dog로 만든 객체는 Animal 자료형이다. (O)
Animal dog = new Dog();
- Animal로 만든 객체는 Dog 자료형이다. (X)
Dog dog = new Animal();
메소드 오버라이딩
- 상속한 클래스의 메소드와 동일한 이름의 메소드를 현재 클래스에서 변경하여 정의한다면,
- 우선순위가 현재 클래스의 메소드가 높기 때문에 현재 클래스의 메소드가 호출된다.
public class HouseDog extends Dog{
// 오버라이딩
public void Sound( ) {
System.out.println(this.name + ": bark in house");
}
public static void main(String[] args) {
HouseDog houseDog = new HouseDog();
houseDog.setName("Ongsim");
houseDog.Sound();
}
}
/* 출력결과
Ongsim: bark in house
*/
메소드 오버로딩
- 같은 이름의 메소드지만, 입력 항목이 다른 경우 또 생성이 가능하다. 이것을 메소드 오버로딩이라고 한다.
- Sound(int num) 메소드
public class HouseDog extends Dog{
// 오버라이딩
public void Sound( ) {
System.out.println(this.name + ": bark in house");
}
public void Sound(int num) {
System.out.println(this.name + ": bark in house for " + num + " times");
}
public static void main(String[] args) {
HouseDog houseDog = new HouseDog();
houseDog.setName("Ongsim");
houseDog.Sound();
houseDog.Sound(3);
}
}
/* 출력결과
Ongsim: bark in house
Ongsim: bark in house for 3 times
*/
*** 자바는 다중 상속을 지원하지 않는다. ***
'Application > Java' 카테고리의 다른 글
[Jump2Java] 05장 객체지향 프로그래밍 06 (0) | 2021.09.14 |
---|---|
[Jump2Java] 05장 객체지향 프로그래밍 05 (0) | 2021.09.14 |
[Jump2Java] 05장 객체지향 프로그래밍 04 (0) | 2021.09.14 |
[Jump2Java] 05장 객체지향 프로그래밍 02 (0) | 2021.09.14 |
[Jump2Java] 05장 객체지향 프로그래밍 01 (0) | 2021.09.14 |
댓글