상세 컨텐츠

본문 제목

7) Java - 클래스

Today's Study/Academy

by Hello-Melo 2022. 3. 10. 14:47

본문

Sacher Torte

 

22.3.10

 

- 본격적으로 객체에 대한 수업 시작

- 다행히 아직까진 어려운 내용은 없지만, 계속 반복해서 공부하자

 

- 이거시 Java 다 - 

 

6장. 클래스

 

1) 객체 지향 프로그래밍

 - OOP(Object Oriented Programming) : 객체가 프로그램의 부품이 되어 상호 간 데이터를 주고받음

 - Object(객체) : 객체란 Class로부터 생성/New 연산자로 생성자 메소드를 호출하여 생성/객체는 서로 독립적

 - 특정한 클래스로부터 생성된 객체를 그 클래스의 인스턴스(인던 생각하면 편함)

 - 객체들은 서로 간에 기능(동작)을 이용하고 데이터를 주고받음

 - 객체 지향 프로그래밍 특징 4가지 : 캡슐화 / 상속/ 다향성 / 추상화

 

2) 클래스 선언

 - 두 개 이상의 클래스 파일을 선언할 수 있음

 - 하나의 소스파일에 여러 개의 클래스를 선언하더라도 클래스 수만큼 코드 파일이 생성됨(bin 폴더에 생성)

 - 파일 이름과 동일한 이름의 클래스에만 Public 접근자를 붙일 수 있음

 - 하나의 소스파일에서 public이 붙을 수 있는 클래스는 1개뿐

 

3) 객체 생성과 클래스 변수

 - new 연산자 : 힙(Heap) 영역에 객체를 생성 후 객체 주소 반환/이 주소는 스택(Stack) 영역의 참조 변수에 저장

 - 즉 스택은 참조 변수의 주소의 모임 박스, 힙은 객체가 생성되는 박스

 

4) 클래스의 구성

 - 클래스는 필드(변수), 생성자, 메소드로 구성됨

 - 메인 메소드에서 객체의 필드(변수)에 직접 접근할 수 있다면 코드가 꼬이고 문제 발생할 수 있음

 - 그래서 캡슐화가 필요

 - Private를 선언해서 접근 제한자를 변경하여 오로지 메소드로만 접근하게 함.

 

5) 필드 

 - 필드 = 변수라고 생각하면 편함

 - 필드는 스코프가 클래스 중괄호 블록인 변수라 생각하면 편함

 - 필드 사용 위치 : 객체 내부 (필드 이름으로 바로 접근) / 객체 외부(변수.필드이름)으로 참조 변수로 사용

 

6) 생성자

 - new 연산자에 의해 호출

 - 특수한 메소드의 형태라 생각하면 편함

 - 변환 타입을 따로 명시하지 않음 / 생성자 메소드의 이름은 반드시 클래스 이름과 동일해야 함.

 - 매개 변수가 없거나(기본 생성자/ctrl+space로 선언가능) 여러개 선언 가능

 - 생성자 선언을 생략한 경우 기본생성자 알아서 추가

 - 하지만 생성자가 하나 이상 존재하면 컴파일러는 기본 생성자를 추가하지 않음(내가 해줘야함)

 - 초기값 없이 선언된 필드는 객체가 생성될 때 기본값 자동설정

 - 매개 변수와 필드명 같은 경우 this 사용

 - 필드 초기화 : 생성자의 매개변수로 전달된 값을 클래스에 저장하는 것이 아님!

 - 클래스로부터 생성된 구체적 객체에 저장하는 것(즉, 클래스에 선언되어 있다가, 객체가 생성되면서 저장되는 것!)

 - 생성자 오버로딩 : 매개변수의 타입, 개수, 순서가 다른 생성자 여러개 선언

 - 매개변수는 생성자에 영향을 주지 않음

 - 타입 / 갯수 / 타입의 순서가 영향을 줌(String, int와 int, String은 다른 생성자로 인식)

 - 일일이 생성자를 타이핑 할 필요 없이 alt+shift+s누른 후 Generate Constructor Using Fields 누른 후 자동생성가능!

 

------------------

오늘은 여기까지~

 

- 내 생각에는 객체가 생성되는 개념을 이해 하는게 중요한 것 같음

- 그래야 뒤에 이어지는 개념들을 이해하는데 어려움이 없다

 - Java의 가장큰 특징이 객체 지향적 프로그래밍 언어라는걸 생각하면 당연한 듯?

 - 이번 챕터는 실습보다는 개념 잡는 쪽으로 좀 더 집중해서 공부하는게 좋을 것 같음

 

 

'Today's Study > Academy' 카테고리의 다른 글

9) Java - 클래스(3)  (0) 2022.03.14
8) Java - 클래스(2)  (1) 2022.03.11
6) Java - 참조 타입  (0) 2022.03.08
5) Java - 조건문과 반복문  (0) 2022.03.07
4) Java - 연산자(2)  (0) 2022.03.04

관련글 더보기

댓글 영역