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의 가장큰 특징이 객체 지향적 프로그래밍 언어라는걸 생각하면 당연한 듯?
- 이번 챕터는 실습보다는 개념 잡는 쪽으로 좀 더 집중해서 공부하는게 좋을 것 같음
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 |
댓글 영역