본문 바로가기
JAVA

[자바 ⑤] 자바 JAVA 이론 (객체의 특징 / 추상화 / 캡슐화 / 상속 / 다형성 )

by 비전공자 기록광 2021. 6. 19.
반응형

2021.06.17 - [IT 독학/JAVA] - [자바 ①] 자바 JAVA 이론 (객체지향언어 / 변수 / 연산자)

2021.06.18 - [IT 독학/JAVA] - [자바 ②] 자바 JAVA 이론 (제어문 / 조건문 / 반복문 / 분기문 )

2021.06.18 - [IT 독학/JAVA] - [자바 ③] 자바 JAVA 이론 (배열)

2021.06.19 - [IT 독학/JAVA] - [자바 ④] 자바 JAVA 이론 (객체 / 클래스 / 메소드 )

 

 

객체의 특징에 대해 공부해보려한다.

 

추상화 Abstraction

추상화란 객체가 접근을 허용하는 부분만 공유하는 개념을 말한다.

 

프로그램에서 필요한 부분(데이터)와 그 부분을 처리하기 위한 메소드를 정리하는 과정이자

프로그램에서 필요하지 않는 부분(접근을 허용하지 않는 부분)은 감추는 과정이다.

 

 

캡슐화 Encapsulation

캡슐화란 결국 추상화의 실현이다. 

 

자바에서 캡슐화의 결과를 접근제한자로 볼 수 있다. (참조 → 자바 ④)

접근 제한자를 통해 접근을 허용한 부분은 공개하고 접근을 허용하지 않은 부분은 감춘다.

 

 

상속 Inherit

상속은 하위 클래스가 상위 클래스의 개념을 이어 받는 기능을 말한다.

상속은 클래스를 재사용하면서 코드의 중복을 제거하고 공유하는 공통 부분을 한번에 관리하기 때문에 유지보수성이 좋다는 장점이 있다.

 

상속에서 중요한 점은 아무리 하위 클래스가 상위 클래스를 상속 받아도 private 멤버 변수에는 접근이 가능하지 않다는 것이다. 함부로 부모 클래스의 생성자나 초기화 블록을 사용할 수 없게 하는 것이다.

 

+ 참고

인프런 강의 

https://inf.run/Cwif

 

자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!! - 인프런 | 강의

Java 기본 개념, 이 강의에서 한 번에 잡아요. 또한 학사관리 프로그램, 어린이집 식대 관리 등 예제 실습을 통해 배운 내용을 바로 내 것으로😀, 개발자가 가장 많이 사용하는 언어. 자바를 Java봐

www.inflearn.com

 

 

 

다형성 Polymophism 

다형성은 하나의 클래스나 메소드를 여러가지 방법으로 사용하는 기법이다.

 

생활코딩에서 들은 예시가 좋아 가져와봤다.

키보드의 키를 통해서 비유를 들어보겠다. 키보드의 키를 사용하는 방법은 '누른다'이다. 하지만 똑같은 동작 방법의 키라고 하더라도 ESC는 취소를 ENTER는 실행의 목적을 가지고 있다.

다형성이란 동일한 조작방법으로 동작시키지만 동작방법은 다른 것을 의미한다.

 

클래스를 여러가지 타입으로 쓰기 (다형성 실현) 위해서는 상속을 사용한다. 

 

하위 클래스는 상위 클래스를 상속받는다.

다형성 기법을 통해

하위 클래스를 상위 클래스 타입의 참조변수로 인스턴스화 시켜 사용할 수 있다는 것이다.

 

생활코딩 

 

10행을 보면 obj는 클래스 B를 인스턴스화하지만 클래스 A 타입으로 담겨있다.

여기서 클래스 B는 클래스 A를 상속받는다.

 

그렇기 때문에 obj는 x( )메소드를 리턴할 수 있지만 y( )메소드는 리턴할 수 없다. 

 

여기서 인스턴스 obj를 하위 클래스인 클래스 B로 만들어졌지만

마치 상위 클래스인 클래스 A처럼 사용할 수 있다고 볼 수 있다.

 

즉 클래스 다형성을 통해 도형의 타입으로 원 타입의 객체와 삼각형 타입의 객체를 쓸 수 있게 되는 것이다.

 

 

메소드 다형성은 예시로 오버로딩을 들 수 있다. (참조 → 자바 )

 

 

 

+참고

다형성 - Java (opentutorials.org)

 

다형성 - Java

이번 시간에는 다형성(Polymorphism)이라는 주제에 대해서 알아보자. 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 키보드의 키를 통해서 비유

opentutorials.org

 

반응형

댓글