월루를 꿈꾸는 대학생

ch7-2 객체 본문

Programing/Java

ch7-2 객체

하즈시 2021. 4. 11. 10:36
728x90

5. 다형성 

 

5.1 다형성이란

- 여러가지 형태를 가질 수 있는 능력

- 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하는 것 

- 참조변수가 사용할 수 있는 멤버의 갯수는 인스턴스 멤버 갯수보다 같가너 적어야한다 

 

조상 클래스 타입 참조변수로 자손 클래스의 인스턴스 참조하는 것 

둘 다 같은 타입의 인스턴스지만 참조변수의 타입에 따라 사용할 수 있는 멤버의 갯수가 달라짐 

 

https://velog.io/@kongsub/Polymorphism

 

tv 클래스는 부모 클래스로 caption tv의 인스턴스 접근은 가능하지만 captiontv에만 있는 멤버에는 접근이 불가

즉, tv는 옛날 리모컨 , caption tv는 기존의 tv리모컨 + 신기능 들어있는 리모컨

 

 

5.2 참조변수의 형변환

 

-  참조변수도 형변환이 가능  단!! 서로 상속관계에 있는 클래스 사이에서만 가능하다 

 

자손 -> 조상 : 형변환 생략가능  --> 업캐스팅 

조상 -> 자손 : 형변환 생략 불가  --> 다운캐스팅! 

 

 

 

5.3 instanceof 연산자 

 

참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용 

반환값이 true / false로 

 

https://dlsdn73.tistory.com/332

 

어떤 타입에 대한 instanceof 연산 결과가 true라는 것은 검사한 타입으로 형변환이 가능하다는 뜻 ! 

 

 

5.4 참조변수와 인스턴스의 연결 

 

- 보통 메서드의 경우 부모클래스의 메서드를 자식 클래스에서 오버라이딩 경우 참조 변수의 타입에 관계없이 항상 실제 인스턴스에 있는 즉 오버라이딩 된 메서드가 호출되지만 .... 멤버변수의 경우 참조변수 타입에 따라 값이 다르다 

즉. 메서드는 오버라이딩 된 것을 사용 하지만 멤버변수는 참조변수에 따라 다름 

 

 

 

6. 추상클래스

 

6.1 추상클래스란?

 

추상클래스는 미완성 설계도에 비유가능 

미완성 설계도이기에 제품생산은 불가 => 인스턴스 생성불가 

 

다만 새로운 클래스를 작성하는데 있어서 바탕이 되는 의미를 가짐 

 

abstract class 클래스이름 {

//

}

 

6.2 추상 메서드 

- 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것이 추상메서드 

- 자손클래슨느 오버라이딩을 통해 부모쪽의 추상클래스의 추상 메서드를 모두 구현해주어야한다!! 

 

https://m.blog.naver.com/PostView.nhn?blogId=29java&logNo=70189390355&proxyReferer=https:%2F%2Fwww.google.com%2F

 

- 구현부가 없는 메서드의 의미는 선언부를 미리 작성함으로 인한 생산성 상승

 

6.3 추상 클래스의 작성 

 

추상화 : 클래스간의 공통점을 찾아 공종의 조상을 만드는 작업

구체화 : 상속을 통해 클래스를 구현 , 확장하는 작업 

 

 

7. 인터페이스 

 

7.1 인터페이스란?

 

- 일종의 추상클래스 

- 오직 추상 메서드와 상수만을 멤버로 가질 수 있따.

- 일반적인 추상클래스가 부분적으로 완성된 미완성 설계도라고 한다면 ... 인터페이스란 아무것도 없는 밑그림만 있는 기본 설계도이다 

- 인스턴스 생성 x -> 다만 클래스 작성에 도움을 줄 목적 

- 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용 !

 

interface 인터페이스이름 {
	public static final 타입 상수이름 = 값 ;
    public abstract 메서드이름(매개변수목록);
}

 

모든 멤버변수는 public static final 이어야 하며 이를 생략 가능 

모든 메서드는 public abstract이어야하면 생략 가능 

 

 

7.3 인터페이스의 상속

 

- 인터페이스는 인터페이스로부터만 상속을 받을 수 있고 클래스와 달리 다중 상속이가능 ! 

 

https://kookyungmin.github.io/language/2018/05/31/java_16/

 

implements 를 사용해서 상속을 통해 인스턴스 생성이 가능하다 

 

 

인터페이스의 장점

- 개발시간 단축 가능

- 표준화 가능

- 서로 관계없는 클래스들에게 관계 맺기 가능

- 독립적인 프로그래밍 가능 ! 

 

 

8. 내부 클래스 

 

8.1 내부 클래스란 ? 

 

- 클래스 내에 선언된 클래스 

- 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근 가능 

- 코드의 복잡성을 줄일 수 있음 -> 캡슐화 

 

https://blog.itthis.kr/56

A가 B를 감싸는 외부클래스 B가 내부클래스 

 

 

 

 

728x90

'Programing > Java' 카테고리의 다른 글

ch 8 알고리즘  (0) 2021.04.18
CH8 예외처리  (0) 2021.04.18
7_1 알고리즘  (0) 2021.04.04
7-1 객체지향  (0) 2021.04.04
6-2 알고리즘  (0) 2021.03.28