본문 바로가기
Application/Java

[Jump2Java] 05장 객체지향 프로그래밍 03

by 윤루트 2021. 9. 14.

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
*/

 

*** 자바는 다중 상속을 지원하지 않는다. ***

댓글