728x90
< 남의 클래스 & 남의 인스턴스 >
- 클래스
연관된 메서드 + 변수를 묶은 것
(class라는 정리정돈 상자를 통해 프로그램을 만든다 = 이것이 객체지향 프로그래밍) - 클래스 ➡ 인스턴스(객체)
클래스들을 필요할 때마다 계속 소환한다면 코드와 수정이 복잡해짐
그래서 긴 호흡이 필요한 클래스들은 복제본인 인스턴스를 만들어 쉽게 접근이 가능하도록 함 - 인스턴스( = 객체)
어떤 상태를 가지고 있는 클래스의 복제본을 변수에 담은 것
즉, 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있다. - 객체와 인스턴스
출처 : https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html
객체 Object | 인스턴스 Instance |
소프트웨어 세계에 구현할 대상 클래스에 선언된 모양 그대로의 생성된 실체 클래스의 인스턴스라고도 부름 모든 인스턴스를 대표하는 포괄적인 의미를 갖는다. |
설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체 객체를 소프트웨어에 실체화하면 '인스턴스'가 됨 인스턴스는 객체에 포함된다고 볼 수 있음 |
< 클래스 >
- 클래스명.내부메소드
이미 저장된 값으로 불러올 때마다 내부 데이터를 가져온다.
필드와 메소드를 클래스 안에 쓰고, 메인에서는 클래스명.메소드 와 같이 호출하는 식으로 코드를 짬
➡ 더 정리 정돈된 코드처럼 보인다 :) - 하나의 파일에 여러 개의 클래스를 만들 수 있나요?
YES!
class 작성하고 저장하면, 클래스별로 파일이 생성된다 :)
< 인스턴스 ( = 객체) >
- 인스턴스 필요 이유
여러 상태의 클래스가 동시에 필요할 때 클래스 앞에 new를 붙여서 클래스의 복제본( = 인스턴스)을 만들어
서로 다른 상태를 유지할 수 있습니다.
- 원형 : class / 복제본 : instance / 복제할 때 쓰는 것 : new - ex)
FileWriter f1 = new FileWriter(); ➡ FileWriter를 복제한 f1이란 인스턴스가 생긴 것
(FileWriter라는 데이터 타입이다. f1이라는 이름을 가진 = new 복제했다 FileWriter라는 클래스를)
f1.write("Hello"); ➡ 그 인스턴스의 메소드를 호출하는 것을 통해서 인스턴스를 조작할 수 있게 된다. - 인스턴스와 클래스의 차이
인스턴스 ( = 클래스의 복사본) | 클래스 |
하나의 클래스로부터 다른 결과를 도출해야 할 때 여러 개의 인스턴스 사용시 ➡ 데이터를 따로 관리하기 쉽고 편안해진다. (클래스를 여러 번 수정하지 않아도 됨~) |
어떠한 메소드의 가장 뿌리가 되는 코드 |
< static >
- static 유무의 차이
static 존재 ➡ 클래스 소속
static 없음 ➡ 클래스를 복제한 인스턴스 소속 - 인스턴스에서 static 있는 변수 혹은 메소드 수정 시
class에서 그 원본 자체가 수정이 되고
그 변수, 메서드를 가리키는 모든 곳에서 수정이 된다. - 인스턴스에서 static이 없는 변수 혹은 메소드를 수정 시
(static이 없는 변수 혹은 메소드는 인스턴스 생성 시 독립적으로 새로 생성된 것이므로)
그 인스턴스 내에서 독립적으로 수정이 된다.
class의 변수를 바꾸면 모든 instance의 변수의 값이 바뀐다.
인스턴스에서 클래스 값을 바꿔도 모든 변수의 값이 바뀐다.
< 생성자와 this >
- 생성자
java는 클래스와 동일한 이름을 가진 메소드가 있으면, 그 메소드를 생성자로 지정하는데
생성자는 클래스가 인스턴스화 되었을 때 실행된다. - this
클래스 내에서 this는 클래스가 인스턴스화 되었을 때 생성된 인스턴스를 가리킨다.
JAVA 객체 지향 프로그래밍 - 생활코딩
수업소개 많아진 변수와 메소드 때문에 고통스럽나요? 이 수업은 서로 연관된 변수와 메소드를 모아서 이름을 붙인 객체를 다루는 수업입니다. 객체를 이용해서 코드의 구조를 세우는 프로그
opentutorials.org
728x90
'🤯TIL > JAVA' 카테고리의 다른 글
[이것이 자바다 - 연습문제] chapter 01. 자바 시작하기 (0) | 2022.10.10 |
---|---|
[JAVA 상속] Overriding / Overloading / this / super / 생성자_by생활코딩 (0) | 2022.09.17 |
[JAVA method(함수)] 기본 형식 / 입력 값 / 출력 / 활용_by생활코딩 (0) | 2022.09.17 |
[JAVA 제어문] boolean / 비교연산자 / 조건문 / 문자의 비교 / 반복문과 배열문_by생활코딩 (0) | 2022.09.17 |
[JAVA 입문] 입력과 출력_by생활코딩 (0) | 2022.06.30 |