클래스
- 객체란?
: 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있는 다른 것과 식별 가능한 것 속성과 동작 -> 필드와 메소드
- 객체 모델링 : 객체를 소프트웨어 객체로 설계하는 것/ 현실 세계의 객체의 속성고 동작을 추려내어 소프트웨어 객체의 필드와 메소드를 정의하는 것
- 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용하면서 동작
-> 메소드 / 객체가 다른 객체의 기능을 이용하는 것 : 메소드 호출
메소드는 도트(.) 연산자 이용해 필드와 메소드 접근할 때 사용
- 객체는 개별적으로 사용할 수 있지만, 대부분 다른 객체와 관계를 맺고 있다.
1. 집합관계 : 하나는 부품이고 하나는 완성품에 해당
2. 사용관계 : 객체 간의 상호작용. 객체는 다른 객체의 메소드를 호출하여 원하는 결과를 얻어낸다.
3. 상속관계 : 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계 / 대부분 상위: 종류, 하위 : 구체적인 사물
객체 지향 프로그래밍의 특징
1. 캡슐화(Encapsulation) : 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것. 외부 객체는 객체 내부의 구조를 알지 못하며, 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있음
-> why? 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록
2. 상속(Inheritance) : 부모 역할의 상위 객체와 자식 역할의 하위클래스가 있음 -> 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에 물려주어 하위 객체가 사용할 수 있도록 함
-> 재사용, 효율적, 개발 시간 절약, 유지보수 최소화
3. 다형성(Polymorphism) : 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질
자바에서는 부모 클래스 또는 인터페이스 타입 변환 허용 ex) 부모 타입에는 모든 타입의 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.
객체와 클래스
- 객체 : 하나의 설계도
- 클래스 : 객체를 생성하기 위한 필드와 메소드 정의 됨, 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 함
1. 클래스 설계 -> 2. 설계된 클래스를 가지고 사용할 객체 생성해야 함 -> 3. 생성된 객체 사용
main() 메소드 없는 크래스는 객체 생성 과정을 거쳐 사용해야 함
- 클래스 선언
: 하나 이상의 문자로 이루어져야 함. 첫번째 글자 숫자 올 수 없음. '$','_' 외의 특수문자 사용 불가, 자바 키워드 불가
- 객체 생성 : new 클래스();
new : 클래스로부터 객체를 생성시키는 연산자. -> 생성된 객체는 메모리 힙(heap) 영역에 생성됨
힙 영역에 객체 생성 후 객체 주소 리턴 -> 객체 사용할 수 있음 ex) 클래스 변수; 변수 = new 클래스();
- 실행 클래스 : main 가지고 있는 실행 클래스
- 라이브러리 클래스 (API) : 다른 클래스에서 사용할 목적으로 이루어 짐
- 클래스의 구성 멤버 : 필드, 생성자, 메소드
1. 필드 : 객체의 고유 데이터, 부품 객체, 상태 정보 저장하는 곳. 선언 형태는 변수와 비슷하지만 필드를 변수라고 부르지 않음. 생성자와 메소드 내에서만 사용. 종료되면 자동 소멸
2. 생성자 : new 연산자로 호출되며 특별한 중괄호 {} 블록임.
역할 : 객체 생성 시 초기화 담당 - 필드 초기화 or 메소드 호출해서 객체 사용할 준비, 클래스 이름과 같고 리턴 타입 없음
3. 메소드 : 객체의 동장에 해당하는 중괄호{} 블록
메소드 호출하면 중괄호 블록에 있는 모든 코드 일괄적으로 실행. 필드 읽고 수정하는 역할 + 다른 객체 생성해 다양한 기능을 하기도 함
- <이것이 자바다1>. 한빛 미디어
'JAVA' 카테고리의 다른 글
클래스_3(정적, 인스턴스) (0) | 2019.06.18 |
---|---|
클래스_2(필드, 생성자,메소드) (0) | 2019.06.18 |
열거 타입 (0) | 2019.06.18 |
배열 (0) | 2019.06.18 |
참조 타입 (0) | 2019.06.18 |