상속, 오버라이드, 인터페이스,다형성_Java

miin·2021년 5월 31일
0

JAVA 

목록 보기
7/13

상속 Inheritance

정의
누군가가 만들어 놓은 기존 클래스에 본인이 새로운 기능을 추가하게 되면 기존클래스의 내용과 본인이 만든 코드가 섞여 나중에 코드에 문제가 발생하여 유지보수 하기가 어렵다.
이런 문제를 해결하기 위해 기존 클래스의 기능을 그대로 유지한 상태에서 새로운 클래스를 만들어 원하는 기능을 추가할 수 있는 방법을 지원하는 것을 상속이라고 한다.
중복 방지

기술법
class 새로만든자식클래스 extends 부모클래스{}
이렇게 기술하면 자식클래스는 부모의 모든 기능을 가지고 있다

부모에서 접근 제한자를 private로 선언한 것은 자식으로 사용할 수 없으니, 상속하려면 public을 선언해야 한다

super.필드 super.메소드를 이용해 부모의 필드나 메소드를 접근 할 수 있다.
super() 부모의 생성자 호출
super.필드 = 필드; or super(필드,필드);
super 다음에 this가 위치해야 함

오버라이드 Override

정의
부모의 메소드를 재정의해 자식에서 사용하는 것

오른쪽 마우스 -> source -> override

인터페이스 Interface

정의
메소드 묶음의 역할을 정의하는 방법
인터페이스의 장점 : 인터페이스를 통한 업캐스팅 가능, 프로그램 설계의 명확성 증가

프로토타입 메소드: 내용이 없는 껍데기 메소드
implements 키워드: 클래스에게 역할을 부여하는것

인터페이스를 선언할 때면, 반드시 프로토타입 메소드를 오버라이딩 해야한다

class 자식클래스명 implements 부모클래스명 {
프로토타입 메소드 오버라이딩(재정의)
}

interface AAA {
public void aaa();
}
interface BBB {
public void bbb();
}
interface CCC {
public void ccc();
}
class Foo implements AAA, BBB, CCC {
...
}

다형성 Polymorphism

정의
부모 인스턴스에 자식 인스턴스를 넣을 수 있다.
반다의 경우에는 안됨, 자식끼리도 안됨. only 부모에만 담을 수 있음
하나의 객체가 다양한 타입으로 해석되는것

싱글톤 singleton
1. 생성자를 private로 막아준다
2. 정적필드로 자기자신의 객체를 한번은 만들어준다
(외부에서 한번 생긴 객체를 변경하지 못하도록 막는다)

Class Car{
static Car singleton = new Car();
private Car(){}
static Car getInstance(){
return singleton;
}
}

0개의 댓글