This is a blog.

자바 기록 5일차 본문

JAVA/Book Summary

자바 기록 5일차

Calcot 2021. 6. 3. 21:11

혼자 공부하는 자바 / 저자 : 신용권

chapter06. 클래스 정리-1.

 

 

클래스-1

 

 

객체 지향 프로그래밍

객체란?

: 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고

있으면서 식별가능한 것.

: 객체는 속성과 동작으로 구성되어 있다.

ex) 사람은 이름, 나이 등의 속성과 웃다, 걷다 등의 동작이 있다.

사람 = 객체 | 속성 = 이름, 나이 | 동작(메소드) = 웃다, 걷다.

객체 모델링 :현실 세계의 객체를 소프트웨어 객체로 설계하는 것.

 

 

객체의 상호작용

객체들은 각각 독립적으로 존재.

독립적인 객체는 다른 객체와 서로 상호작용하면서 동작한다.

객체들 사이의 상호작용 수단은 메소드이다.

객체가 다른 객체의 기능을 이용하는 것이 메소드 호출.

호출 방법 : 리턴값 = 전자계산기객체.메소드(매개값1, 매개값2...)

ex) int result = Calculator.add(10,20)

=>1020을 더하는 기능.

 

 

객체 간의 관계

집합관계 : 하나는 부품, 하나는 완성품.

ex) 자동차(완성품) 과 엔진,타이어,핸들(부품)

사용관계 : 객체 간의 상호작용.

ex) 사람은 자동차를 사용한다.

=> 사람은 자동차를 사용할 때 달린다, 멈춘다 등의 메소드를 호출.

상속관계 : 상위(부모)객체를 기반으로 하위(자식) 객체를 생성하는 관계.

ex) 자동차(하위)는 기계(상위)의 한 종류이다.

 

 

객체와 클래스

클래스 = 설계도

* 클래스에는 객체를 생성하기위한 필드와 메소드가 정의되어 있다.

인스턴스

: 클래스로부터 만들어진 객체.

: 하나의 클래스로부터 여러 갱의 인스턴스를 만들 수 있다.

=> 동일한 설계도로부터 여러 댕의 자동차를 만드는 것과 동일.

 

 

클래스 선언

- 작성규칙

1. 하나 이상의 문자로 이루어져야 한다.

2. 첫 글자에는 숫자가 올 수 없다.

3. ‘$’‘_’외의 특수문자는 사용할 수 없다.

4. 자바 키워드는 사용할 수 없다. ex) int(x), for(x)

=> 클래스 이름은 한글이든 영어든 상관없지만, 한글로 클래스 이름을 만드는 경우는 거의 없다.

=> 영어 대소문자를 구분.

=> 통상적으로 클래스 이름이 단일 단어라면 첫 글자를 대문자로하고 나머지는 소문자로 작성.

=> 서로 다른 단어가 혼합된 이름을 사용한다면 각 단어의 첫 글자는 대문자로 작성. (카멜 표기법)

 

 

객체 생성과 클래스 변수

- 클래스로부터 객체를 생성하려면 new 연산자를 사용한다.

 

new 클래스();

 

- 클래스로 선언된 변수에 new 연산자가 리턴한 객체의 번지를 저장하는 코드

 

클래스 변수;

변수 = new 클래스();

 

1개의 실행문으로 작성할 수도 있다.

 

클래스 변수 = new 클래스():

 

 

클래스의 구성 멤버

- 필드, 생성자, 메소드

=> 생략되거나 복수의 개수로 작성될 수 있다.

 

- 필드

: 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳.

: 선언 형태는 변수와 비슷하지만 필드를 변수라고 부르지는 않는다.

: 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재.

 

- 생성자

: new 연산자로 호출되는 특별한 중괄호 {}블록.

: 객체 생성 시 초기화를 담당.

: 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고 리턴 타입이 없다.

 

- 메소드

: 객체의 동작에 해당하는 중괄호 {} 블록.

: 객체 간의 데이터를 전달하는 수단.

: 외부(호출한 곳)로부터 매개 값을 받아 실행에 이용하고, 실행 후 결과 값을 외부(호출한 곳)로 리턴할(돌려 줄) 수도 있다.

 

 

필드

 

필드 선언

생성자 선언과 메소드 선언의 앞과 뒤 어떤 곳에서도 필드 선언이 가능.

생성자와 메소드 중괄호 {} 블록 내부에는 선언 될 수 없다.

클래스 멤버 변수라고도 부른다.

 

타입 필드 [ = 초기값]

 

=> 타입은 필드에 저장할 데이터의 종류를 결정한다.

타입에는 기본타입과 참조타입이 모두 올 수 있다.

필드의 초기값은 필드 선언 시 주어질 수도 있고 생략될 수도 있다.

ex) String company = “현대자동차”;

int maxSpeed = 300;

int currentSpeed;

 

 

필드 사용

필드값을 읽고 변경하는 작업.

클래스 내부의 생성자나 메소드에서 사용할 경우 필드 이름으로 읽고 변경하면 된다.

클래스 외부에서 사용할 경우 클래스로부터 객체를 생성한 뒤 필드를 사용해야 한다.

=> 필드가 객체에 소속된 데이터이므로 객체가 존재하지 않으면 필드도 존재하지 않기 때문.

 

 

생성자

객체의 초기화를 담당.

* 객체 초기화 = 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것.

=> 생성자를 실행하지 않고는 클래스로부터 객체를 만들 수 없다.

 

기본 생성자

: 모든 생성자는 생성자가 반드시 존재하며, 하나 이상 가질 수 있다.

: 생성자를 생략했을 시, 기본 생성자를 자동으로 추가한다.

: 클래스에 명시적으로 선언한 생성자가 1개라도 있으면 기본 생성자를 자동으로 추가하지 않는다.

 

 

생성자 선언

선언 방법

 

클래스( 매개변수선언, ...){

//객체의 초기화 코드

}

=> 매개 변수 선언은 생략할 수도 있고 여러 개를 선언해도 된다.

* 매개 변수 = new 연산자로 생성자를 호출할 때 외부의 값을 생성자 블록 내부로

전달하는 역할을 한다.

=> 생성자가 명시적으로 선언되어 있을 경우, 반드시 선언된 생성자를 호출해서 객체를 생성해야 한다.

 

 

필드 초기화

클래스로부터 객체가 생성될 때 필드는 기본 초기값으로 자동 설정.

다른 값으로 초기화하고 싶다면 두가지 방법이 있다.

1. 필드를 선언할 때 초기값을 준다.

2. 생성자에서 초기값을 준다

 

this

: 필드와 매개 변수 이름이 동일할 때 사용.

: this는 객체 자신의 참조

: ‘this.필드this라는 참조 변수로 필드를 사용하는 것과 동일하다.

 

 

생성자 오버로딩

매개 변수를 달리하는 생성자를 여러 개 선언하는 것.

 

 

다른 생성자 호출 : this()

생성자 오버로딩이 많아질 경우 생성자 간의 중복된 코드가 발생할 수 있다.

매개 변수의 수만 달리하고 필드 초기화 내용이 비슷한 생성자에서 이러한 현상을 많이 볼 수 있다.

생성자에서 다른 생성자를 호출할 때는 다음과 같이 this() 코드를 사용한다.

클래스([매개변수]) {

this(매개변수, ..., , ...);

실행문;

}

this()는 자신의 다른 생성자를 호출하는 코드.

반드시 생성자의 첫 줄에서만 허용.

 

'JAVA > Book Summary' 카테고리의 다른 글

자바 기록 7일차  (0) 2021.06.07
자바 기록 6일차  (0) 2021.06.05
자바 기록 4일차  (0) 2021.06.02
자바 기록 3일차  (0) 2021.06.01
자바 기록 2일차  (0) 2021.05.31
Comments