1) 메소드 오버라이딩
- 상속된 메소드를 자식 클래스에서 재정의하는 것
- 메소드가 오버라이딩되었다면 해당 부모 메소드는 숨겨지고 자식 메소드가 우선적으로 사용된다.
1-1. 규칙
- 부모 메서드의 선언부(리턴타입, 메서드이름, 매개변수)와 동일해야 함
- 접근 제한을 더 강하게 오버라이딩할 수 없다(public -> private 변경 불가)
- 새로운 예외를 throws할 수 없다
package kr.or.ksmart.eduJava.inherit;
public class Calculator {
public double areaCircle(double r) {
System.out.println("Calculator 객체의 areaCircle() 실행");
return 3.14159 * r * r;
}
}
package kr.or.ksmart.eduJava.inherit;
public class Computer extends Calculator{
@Override //컴파일 시 정확히 오버라이딩이 되었는지 체크해줌
public double areaCircle(double r) {
System.out.println("Computer객체의 areaCircle() 실행");
return Math.PI * r * r;
}
}
Computer com = new Computer();
com.areaCircle(10);
// Computer객체의 areaCircle()이 주석처리되면 자동으로 부모 클래스인 Calculator 객체의 areaCircle() 실행된다.

2) 타입 변환
- 타입을 다른 타입으로 변환하는 것
- 클래스의 타입 변환은 상속 관계에 있는 클래스 사이에서 발생한다.
2-1. 자동 타입 변환
- 자동적으로 타입 변환이 일어나는 것
Cat cat = new Cat();
Animal ani = cat;
2-2. 강제 타입 변환
- 자식타입은 부모타입으로 자동 변환되지만, 반대로 부모타입은 자식 타입으로 자동 변환되지 않는다.
- 캐스팅 연산자로 강제 타입 변환을 할 수 있다.
Animal ani = new Cat();
Cat cat = (Cat) ani;
3) 다형성
- 사용방법은 동일하지만 실행 결과가 다양하게 나오는 성질
- 다형성의 종류에는 필드, 매개변수가 있다.
3-1. 필드 다형성
- 필드 타입은 동일하지만(사용 방법은 동일하지만), 대입되는 객체가 달라져서 실행결과가 다양하게 나올 수 있는 것
3-2. 매개변수 다형성
- 다형성은 필드보다는 메소드를 호출할 때 많이 발생한다. 메소드가 클래스 타입의 매개변수를 가지고 있을 경우, 호출할 때 동일한 타입의 객체를 제공하는 것이 정석이지만 자식 객체를 제공할 수도 있는데, 여기서 다형성이 발생한다.
4) 추상클래스
- 객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스를 추상 클래스라고 한다. 추상 클래스는 실체 클래스의 부모 역할을 한다. 따라서 실체 클래스는 추상 클래스를 상속해서 공통적인 필드나 메소드를 물려받을 수 있다.
4-1. 추상 클래스 선언 : 클래스 선언에 abstract 키워드를 붙이면 추상클래스 선언이 된다. 추상 클래스는 new 연산자를 이용해서 객체를 직접 만들지 못하고 상속을 통해 자식 클래스만 만들 수 있다.
public abstract class 클래스명{
//필드
//생성자
//메소드
}
package kr.or.ksmart.eduJava.inherit;
import java.lang.reflect.Array;
public abstract class Product {
public abstract Array getList();
public abstract void getDetail();
public abstract void getModify();
public abstract void getRemove();
}
'JAVA, JSP' 카테고리의 다른 글
| java, jsp - 상품목록, 상품상세페이지 구현 (0) | 2024.08.09 |
|---|---|
| java, jsp - 로그인, 로그아웃 구현 (0) | 2024.08.09 |
| java - 7장 상속 (0) | 2024.08.08 |
| java - 클래스(리턴데이터타입, 오버로딩, 정적, final, gatter, setter), import문 자동 추가 단축키 (0) | 2024.08.08 |
| java 6장- 객체지향프로그래밍 (0) | 2024.08.01 |