클래스(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) '+' 연산자의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능
'JAVA' 카테고리의 다른 글
JAVA 용어 정리 [2] 프레임워크/스프링/JSP/JSTL/JQuery (0) | 2022.05.02 |
---|---|
[Java] 배열 (0) | 2022.04.29 |
[ Java ] 형 변환 (0) | 2022.04.29 |
[ WEB ] 우편번호 API (0) | 2022.01.28 |
[ JAVA ] 데이터 크기/변수 (타입,자료형)/형변환/예약어/식별자/주석 (0) | 2022.01.17 |
댓글