[한 클래스가 다른 클래스의 특성과 동작을 그대로 물려받아 사용할 수 있는 기능을 말합니다]
넓은 정의 - 일반화
code의 중복을 피할수없거나. 내 능력으로는 만들지 못하는 기술이 있을 때
누군가 만들어 놓은 코드를 부품처럼 쓴다는 개념
단 . 공개적(pubilc)으로 상속해 주겠다는 것만 받을 수 있다.
inheritance(상속) 이 아닌 extends(확장)이라는 키워드를 사용
요약
※ 자바는 다중상속을 허용하지 않는다 (파이썬은 가능)자바 클래스 분류의 개념으로 정의에서 어긋나 사용X
( 인간이 조류의 특성과 포유류의 특성을 동시에 상속 받을 수 없는 이유와 같다)
객체화로도 남의 기능을 쓸수는 있다.
또한 UML에서는 상속(inherritance)을 일반화(generraliztion) 라고 표현한다.
객체화만 사용할 경우 각 클래스에 어떤한 매소드가 있는지 일일히 확인해야되며
상속을 사용할 경우에는 한 클래스씩 객체화 하지 않아도 한클래스에 몰아넣어서 사용 가능하다.
public class Operator3 {
public int multi(int a, int b) {
return(a*b);
Extends 사용하여 상속한다.
[Operator 3에 Operator 4를 상속시킨다]
public class Operator3 ★extends★ Operator4 {
public int multi(int a, int b) {
return(a*b);
※오버로드 는 과적 하나 이름으로 여러 매개변수를 만들수 있게 한다
단. 매개변수, 타입이 달라야 한다
@Override
public int run() {
return 200;
}
boolean turbo = false;
@Override
public int run() { // 상황에 따라서 부모 메서드를 일부 사용
if(turbo) {
return 200;
}else {
return super.run();
[요약]
1. 자바에서는 상속은 하나의 클래스만 가능
2. 부모를 상속 받은 자식~
3. 상속받은 매서드를 내 맘대로 바꿔 쓸 수 있다. [오버라이드]
4. 단 읽기 전용인 final 키워드가 있는 매서드는 불가능 하다.
여러 객체가 필요할 때 부모 형태의 변수 하나 선언하여 사용할 수 있기에 ( 자원적으로 훨씬 유용하기때문)
단. 고유 특성이 사라진다는 단점도 있다.
Mammal mal;
// 다형성에 의해서 Dog 과 cat 은 부모 형태인 Mammal 안으로 들어 갈 수 있다.
mal = new Dog();
mal.birth(); // 오버라이드 된 매서드는 내가 변경했다 하더라도 부모것 이므로 사용가능
mal.eat(); // 원래 부모의 매서드는 사용 가능
// mal.bark(): // 하지만 내 고유의 매서드는 사용 못함
Dog dog = (Dog) mal;// 부모 형태에서 자식 형태로 되돌아 온다. 명시적 형 변화를 사용 해야 된다.
dog.back();
요약
※ 변수에 쓰면 필드 다형성
※ 매개변수에 쓰면 매개변수 다형성
변수는 데이터를 저장하는 메모리 공간의 이름으로서 어디서든 선언될 수 있고, 해당 스코프 내에서 사용됩니다.
반면에 매개변수는 메서드나 생성자와 같은 메서드의 파라미터로 사용되며, 메서드 호출 시에 값을 전달받습니다.
매개변수는 메서드 내에서만 유효하며 메서드 실행 종료 시 소멸합니다.
패턴화 = 공통점을 추출
상속의 뜻, 의미
어떻게 사용 하는지 {
내것처럼 사용 한다는 게 어떤 의미를 갖는지.
[나를 객체화시키면 부모를 객체화시키지 않아도 사용 할 수 있다는 것]
extends라는 키워드란
기능의 확장
자바는 다중 상속이 안된다 이유는?
상속받았을때 장점은?
상수를 못 받는 것들은
오버라이드랑 오버로드의 차이점
오버라이드를 사용 할 수 없는 것 과 이유
다형성이란
다형성의 장점 (유용함)
00다형성