본문 바로가기
JAVA

[ Java ] 객체지향(Object-Oriented)객체/클래스/상속/캡슐화/접근제한자

by haeun 하은 2022. 4. 29.
728x90

클래스(Class)는 한 마디로 건물을 지을 때 제일 먼저 필요로 하는 설계도면과 같다.

객체(Object)는 설계도면을 통해 완성된 건물이다. 

건물이 지어지면 건물에 주소(Reference)가 부여되고 주소를 통해 건물을 찾아갈 수 있다.

 

클래스(Class)

 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것

 공통된 속성과 연산(행위)를 갖는 객체의 집합

 객체지향 프로그램에서 데이터를 추상화하는 단위

 각각의 객체들이 갖는 속성과 연산(Method)을 정의하고 있는 틀

 슈퍼 클래스(Super Class)는 특정 클래스의 상위(부모)클래스

 서브 클래스(Sub Class)는 특정 클래스의 하위(자식)클래스

 

인스턴스(Instance)

클래스에 속한 각각의 객체

클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라고 한다.

 

객체(Object)

 컴퓨터, 책상, 사람, 강아지 등 현실 세계에서 흔히 찾아볼 수 있는 대상을 모델링한 것이다. 

✔ 모든 사물을 프로그램의 객체로 만들 필요는 없고 프로그램에서 필요한 대상들만 객체화한다.

✔ 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다. 

✔독립적으로 식별 가능한 이름을 가지고 있다.

✔ 객체가 가질 수 있는 조건인 상태(State)는 일반적으로 시간에 따라 변함

✔객체와 객체는 상호 연관성에 의한 관계가 형성된다.

✔객체가 반응할 수 있는 메시지의 집합을 행위(연산, Method)라고 하며, 객체는 행위의 특징을 나타낸다.

✔객체는 일정한 기억장소를 가지고 있다.

 

[ 객체 구성 ]

객체는 속성과 동작으로 구성되어 있는데

자바에서는

이 속성과 동작들을 각각 필드(field)메서드(method)라 부른다.

속성= 필드 -->일종의 변수

속성- 데이터를 저장 할 수 있음

동작=메서드

✔클래스로부터 생성된 객체를 사용하는 방법

✔전통적 시스템의 함수(Function) 또는 프로시저(Procedure)에 해당하는 연산                                                                                                                          

 

< 클래스의 구조 >

 


 

[ 상속  (Inheritance) ]

 물려준다는 의미로 재활용성(Reuse)을 극대화 시킴

 객체가 있을 때 필드와 메소드를 다른 객체가 물려 받을 수 있는 기능

--> 기존의 객체를 그대로 유지하면서 기능을 추가하는것

 기존객체는 물려준다는 의미로 부모객체(상위 클래스super/기초클래스base)

 기존객체에서 기능을 물려 받는다는의미로 자식객체(하위클래스sub/유도클래스derived)

 

< 객체에 메소드를 추가하는 것이 어려운 경우 >

객체를 본인이 만들지 않는 경우 

객체가 다양한 곳에서 활용되고 있는데 메소드를 추가하면 다른 곳에서는 불필요한 기능이 포함될 수 있다.

 

다중 상속(Multiple Inheritance)

한 개의 클래스가 두 개 이상의 상위(부모) 클래스로부터 속성과 연산을 상속받는 것


[캡슐화(은닉화)]

객체의 필드, 메서드를 하나로 묶고 실제 구현 내용을 감추는 것

외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메서드만 이용할 수 있다.

 캡슐화를 하여 필드와 메서드를 보호하여 외부의 잘못된 사용으로 객체가 손상하지 않는다.

즉, 캡슐화-->보안성이 높아진다.

캡슐화를 하기 위해선 접근 제한자를 이용해야한다.

재사용 용이/ 인터페이스 단순해진다.

결합도 낮아지고, 응집도는 높아진다.


[접근 제한자/Access Modifier]

1. 객체 생성을 막기 위해 생성자를 호출하지 못 하게 할 때

2. 객체의 특성 데이터를 보호하기 위해 해당 필드에 접근하지 못하도록 막아야 할 때

사용되며 클래스를 설계할때

외부클래스에서 접근 할 수 있는 멤버접근 할 수 없는 멤버로 구분해서 필드/생성자/메서드를 구성


public 모든 접근을 허용
protected 같은 패키지(폴더) 에 있는 클래스와 상속관계의 클래스만 허용 -->자식 클래스들만 접근허용
default 같은 패키지(폴더)에 있는 클래스들만 허용
private 현재 클래스 내에서만 허용 --> 자식들이 상속 받을 수 없음

 


[ 사용되는 공간 ]

클래스 : public, default

생성자 : public, protected, default, private

변수, 메서드 : public, protected, default, private


다형성(Polymorphism)

하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답 할 수 있는 능력

ex) '+' 연산자의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능

728x90
반응형

댓글