Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 올 겨울은 조금 따뜻할 것 같다.
- 나는야 4학년 #5학년 까지 가보자구
- Spring
- 이분탐색
- heap area #stack area #static area #jvm
- static #자바 메모리 구조 #멤버 변수
- tibero 7.23
- ndc2025
- server engineer
- 서버 엔지니어
- 넥슨개발자컨퍼런스
- level2
- tmax tibero
- 브루트 포스법
- server developer
- 자바 #자바문법 #자바기초 #참조형 #기본형
- Next.js
- level3
- 주니어 백엔드 개발자
- 반복문
- software enginner
- 정보처리기사 실기 #정처기 실기 #2024년 2회 #정처기 2024년 2회 #공부법 # 꿀팁
- object 클래스 # java
- java #예외처리 #throw #throws
- 2026 하반기 대기업 반드시 갑니다
- 백엔드 개발자 로드맵
- 2798블랙잭
- java #추상클래스
- 25304번
- 서버 개발자
Archives
- Today
- Total
개발자 쿠키
명품 JAVA Programming Chap04 클래스와 객체 본문
✔Chap04 클래스와 객체
- 객체 지향과 자바
- 자바 클래스 만들기
- 생성자
- 객체 배열
- 메소드 활용
- 객체의 소멸과 가비지 컬렉션
- 접근 지정자
- static 멤버
- final
- 요약
✔Chap04-1 객체 지향과 자바
- 캡슐화 : 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것으로 객체의 본질적인 특징
- 상속 : 상위 객체의 속성이 하위 객체에 물려져서, 하위 개체가 상위 개체의 속성을 모두 가지는 관계
- 부모 클래스 : 슈퍼 클래스
- 자식 클래스 : 서브 클래스
- 다형성 : 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것
- 오버라이딩 : 부모 클래스에 구현된 메소드를, 자식 클래스에서 동일한 이름으로 자신의 특징에 맞게 다시 구현하 는 메소드
- 오버로딩 : 이름이 같지만 다르게 동작하는 메소드를 여러 개 만드는 메소드
✔Chap04-2 자바 클래스 만들기
- 클래스 : 객체를 만들어 내기 위한 설계도 혹은 틀
- 객체 : 클래스 모양 그대로 생성된 실체, 객체를 클래스의 인스턴스라고도 부른다.
- 클래스 구성
public class Circle {
public int radius; // 원의 반지름 필드
public String name; // 원의 이름 필드 # 필드(변수)
public Circle() { // 원의 생성자 메소드
}
public double getArea() { // 원의 면적 계산 메소드 # 메소드
return 3.14 * radius * radius;
}
}
- 클래스 선언, class Circle
- 필드와 메소드
- 필드 : 객체 내에 값을 저장할 멤버 변수
- 메소드 : 함수, 객체의 행동을 구현한다.
- 접근 지정자, public
- 생성자(constructor) : 클래스의 이름과 동일한 메소드
public static void main (String args[]) {
Circle pizza; // Circle 객체에 대한 레퍼런스 변수 pizza 선언
pizza = new Circle(); // Circle 객체 생성
pizza.radius = 10; // radius 필드에 10 저장
pizza.name = "자바피자"; // name 필드에 "자바피자" 저장
double area = pizza.getArea(); // pizza 객체의 면적 알아내기
}
- 레퍼런스 변수 선언
Circle pizza; // 레퍼런스 변수 pizza 선언
- 객체 생성
pizza = new Circle();
- 변수 선언과 객체 생성 (동시에)
Circle pizza = new Circle();
객체 멤버 접근 : 레퍼런스 변수 뒤에 점(.) 연산자를 붙인다.
pizza.radius = 10;
✔Chap04-3 생성자
- 생성자 : 객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이다.
- 생성자의 이름은 클래스 이름과 동일하다
- 생성자는 여러 개 작성(오버로딩)할 수 있다
- 생성자 new를 통해 객체를 생성할 때 한 번만 호출된다
- 생성자에 리턴 타입을 지정할 수 없다
- 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다
Circle pizza = new Circe(10, "자바피자"); // 생성자 Circle(int r, String n) 호출
- 기본 생성자 : 매개변수와 실행 코드가 없어 아무 일도 하지 않고 단순 리턴하는 생성자이다. 디폴트 생성자라고도 부 른다.
class Circle {
public Circle() { }
}
- this 레퍼런스 : 객체 자신에 대한 레퍼런스이다.
- this의 필요성
- this() : 클래스 내에서 생성자가 다른 생성자를 호출할 때 사용하는 자바코드 이다.
- this() 사용시 주의할 점
- this()는 반드시 생성자 코드에서만 호출할 수 있다.
- this()는 반드시 같은 클래스 내 다른 생성자를 호출할 때 사용된다.
- this()는 반드시 생성자의 첫 번째 문장이 되어야 한다.
✔Chap04-4 객체 배열
- 객체 배열 : 객체에 대한 레퍼런스를 원소로 갖는 배열이다.
✔Chap04-5 메소드 활용
- 메소드 : 클래스의 멤버함수
- 접근지정자
- 4가지유형 : public, private, protected, 디폴트
- 인자 전달 : 값에 의한 호출
- 메소드 오버로딩 : 자바에서는 한 클래스 내에, 이름이 같지만 매개변수의 타입이나 개수가 서로 다른 여러 개의 메소 드를 중복 작성할 수 있다.
- 메소드 이름이 동일하여야 한다.
- 매개변수의 개수나 타입이 서로 달라야 한다.
✔Chap04-6 객체의 소멸과 가지비 컬렉션
- 객체의 소멸 : new에 의해 생성된 객체 공간을 자바 가상 기계에게 돌려주어 가용 메모리에 포함시키는 것이다.
- 가비지 : 자바 응용프로그램에서 더 이상 사용되지 않게 된 객체나 배열 메모리이다.
- 가비지 컬렉션 : 자바 플랫폼은 가용 메모리가 일정 크기 이하로 줄어들면 자동으로 가비지를 회수하여 가용 메모리를 늘린다.
- 가비지 컬렉션 강제 요청
System.gc(); // 가비지 컬렉션 강제 요청
✔Chap04-7 접근 지정자
- 패키지 : 서로 관련 있는 클래스 파일들, 디렉터리 혹은 폴더와 같은 개념
- 자바의 4가지 접근 지정자
- private, protected, public, 접근 지정자 생략(디폴트 접근 지정)
- 클래스 접근 지정
- public 클래스
- 디폴트 클래스(접근 지정자 생략) : 같은 패키지 내의 클래스에서만 사용이 허용된다.
- 멤버 접근 지정
| 멤버에 접근하는 클래스 | private | 디폴트 접근 지정 | protected | public |
| 같은 패키지의 클래스 | x | O | O | O |
| 다른 패키지의 클래스 | x | x | x | O |
| 접근 가능 영역 | 클래스 내 | 동일 패키지 내 | 동일 패키지와 자식클래스 | 모든 클래스 |
- public 멤버 : 패키지를 막론하고 모든 클랜스 접근 가능하다.
- private 멤버 : 비공개, 멤버는 클래스 내의 멤버들에게만 접근 허용된다.
- protected 멤버 : 같은 패키지의 모든 클래스에 접근이 허용된다. 자식클래의 경우 접근이 허용된다.
- default 멤버 : 접근 지정자가 생략된 멤버의 경우, 동일판 패키지 내에 있는 클래스들만 디폴트 멤버를 자유롭게 접근 할 수 있다.
✔Chap04-8 static 멤버
| non - static 멤버 | static 멤버 | |
| 선언 | class Sample { int n; void g() {...} } |
class Sample { static int m; static void g() {...} } |
| 공간적 특성 | 멤버는 객체마다 별도 존재 - 인스턴스 멤버라고 부름 |
멤버는 클래스당 하나 생성 - 멤버는 객체 내부가 아닌 별도의 공간(클래스 코드 가 적재되는 메모리)에 생성 - 클래스 멤버라고 부름 |
| 시간적 특성 | 객체 생성 시에 멤버 생성됨 - 객체가 생길 때 멤버도 생성 - 객체 생성 후 멤버 사용 가능 - 객체가 사라지면 멤버도 사라짐 |
클래스 로딩 시에 멤버 생성 - 객체가 생기기 전에 이미 생성 - 객체가 생기기 전에도 사용 가능 - 객체가 사라져도 멤버는 사라지지 않음 - 멤버는 프로그램이 종료될 때 사라짐 |
| 공유의 특성 | 공유되지 않음 - 멤버는 객체 내에 각각 공간 유지 |
동일한 클래스의 모든 객체들에 의해 공유됨 |
static 멤버는 클래스 이름으로 바로 접근한다.
- static의 활용
- 전역 변수 : 모든 클래스에서 공유
- ex) java.lang.Math // 객체를 생성하지 않고 바로 호출할 수 있는 static 타입의 멤버를 제공한다.
- static 메소드는 static 멤버만 접근 할 수 있다.
- static 메소드는 this를 사용할 수 없다
✔Chap04-9 final
- final 클래스 : 클래스를 상속받을 수 없음을 지정한다.
- fianl로 메소드를 선언하면 오버라이딩할 수 없는 메소드임을 선언한다.
- fianl로 필드를 선언하면 필드는 상수가 된다.
✔Chap04-10 요약
- 객체 지향 언어는 실세계를 모델링하여 객체, 객체 간의 관계, 객체 간의 상호 작용을 나타내는 언어로 캡슐화, 상속, 다형성의 특징을 갖는다.
- 클래스는 객체를 생성하기 위한 설계도 또는 틀이며, 객체는 틀로써 직어낸 실체이다. 객체를 실체로 뜻하는 인스턴스라고 부른다.
- 클래스는 객체들의 특성과 행동에 대한 절차나 방법을 구현하며, class 키워드를 사용하여 선언한다. 클래스는 필드와 메소드로 구성된다.
- 자바에서는 반드시 new 키워드를 사용하여 객체를 생성한다.
- 객체의 배열에서 배열의 원소는 객체가 아니며 객체에 대한 레퍼런스이다. 그러므로 객체 배열 생성 후 다시 원소의 개수만큼 객체를 생성해서 배열의 각 원소에 지정해야 한다.
- 자바의 메소드 호출 시 기본 타입은 '값에 의한 호출'로 전달되고, 객체나 배열을 인자로 전달할 때는 객체나 배열의 레퍼런스만 전달된다.
- 메소드는 오버로딩은 한 클래스 내에서 이름은 같지만 매개변수의 개수나 타입이 다른 여러 개의 메소드를 작성하는 것을 뜻한다.
- this는 현재 객체를 가리키는 레퍼런스이다.
- 생성자는 new를 통해 객체를 생성할 때 호출되며 주로 객체의 필드를 초기화한다.
- this()는 생성자에서 다른 생성자를 호출하는 문장이며, 생성자의 첫 번째 코드로만 사용할 수 있다.
- 더 이상 참조되지 않는 객체를 가비지라 하며, 가용 메모리가 일정 수준 이하로 줄어들면 가비지 컬렉션이 자동으로 실행된다.
- 클래스 접근 지정자로는 public과 디폴트가 사용된다.
- 멤버의 접근 지정자로 private, protected, 디폴트,public이 있다.
- 객체를 생성하지 않고도 사용할 수 있는 필드, 메소드를 static 필드, static 메소드라고 하며 동일한 클래스의 객체들 사이에 공유된다.
- 클래스의 static 멤버들은 클래스당 하나만 생성되며, 프로그램이 시작될 때 이미 생성되어 객체를 생성하지 않고도 사용할 수 있다.
- final로 선언된 클래스는 상송되지 않으며, final 메소드는 더 이상 오버라이딩될 수 없고, final로 선언된 필드는 상수로서 초기화 이후 값을 수정할 수 없다.
명품 JAVA Programming - 황기태, 김효수 - 내용을 정리한 내용입니다.
'java' 카테고리의 다른 글
| 명품 JAVA Programming Chap06 모듈과 패키지 개념, 자바 기본 패키지 (0) | 2022.08.14 |
|---|---|
| 명품 JAVA Programming Chap05 상속 (0) | 2022.08.13 |
| 명품 JAVA Programming Chap03 반복문과 배열 그리고 예외 처리 (0) | 2022.08.02 |
| 명품 JAVA Programming Chap01~02 자바 기본 프로그래밍 (0) | 2022.08.01 |
| [Java] 추상 클래스 (0) | 2022.07.27 |