JAVA_17_클래스와 객체
객체 지향 프로그래밍
- 서로 연관되어 있는 데이터와 연산을 그루핑 할 수 있는 기능.
클래스
- 객체(실세계의 사물) 지향 프로그래밍에서 가장 기본이 됨
- 정의 : 객체를 정의해 놓은 것
- 용도 : 객체를 생성
- 클래스 이용 -> 현실 세계의 특정 물건 지칭 가능
- 하나의 장소나 위치를 의미
- 이진 탐색 트리의 하나의 서브 트리
- 예) Node, Student(하나의 처리할 데이터 단위 명시)
객체
- 정의 : 실제로 존재하는 것. 사물 또는 개념
- 용도 : 객체가 가지고 있는 기능(메소드)과 속성(변수)을 사용
클래스와 객체의 개념
- 클래스 - 객체 : 설계도 - 제품
객체의 구성 요소
- 객체 = 속성(클래스의 변수) + 기능(클래스의 메소드)
-> 클래스에 구체화
객체와 인스턴스
- 객체 : 모든 인스턴스를 대표하는 일반적 용어
- 인스턴스 : 특정 클래스로부터 생성된 객체
- 정의 : 실제로 존재하는 것. 사물 또는 개념
- 용도 : 객체가 가지고 있는 기능(메소드)과 속성(변수)을 사용
클래스와 객체의 개념
- 클래스 - 객체 : 설계도 - 제품
객체의 구성 요소
- 객체 = 속성(클래스의 변수) + 기능(클래스의 메소드)
-> 클래스에 구체화
객체와 인스턴스
- 객체 : 모든 인스턴스를 대표하는 일반적 용어
- 인스턴스 : 특정 클래스로부터 생성된 객체
그냥 두 개를 같다고 보면 된다.
- 클래스의 인스턴스화 = 객체 생성
-> TV의 설계도의 인스턴스화 = TV 만듦!
Car 클래스 { 속력 / 색상 / 이름 ....} --> new Car(); <- 인스턴스화 : Car를 만든다!!
하나의 소스파일에 여러 클래스를 작성할 때
public class 이름1
이 하나라도 있을 때
-> 소스파일 이름(이름1.java)과 같아야 한다.- ✨하나의 소스파일에는 하나의
public class
만
- ✨하나의 소스파일에는 하나의
- 하나라도 없는 경우
class 이름2
class 이름3
.. 가능하다.
1. 참조변수 선언, 객체 생성
내가만든타입 참조변수명 = new 내가만든타입();
클래스명 참조변수명 = new 클래스명();
: 내가 요런 타입의 클래스를 생성할 건데 그 이름은 객체이름이야.
: 이 클래스타입의 참조변수를 선언하고 -> 오른쪽의 객체(인스턴스)를 생성하여 -> 그 주소를 참조변수에 저장한다.
예)
Tv t = new Tv();
- Tv클래스타입의 참조변수 t 선언
- ✨Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 참조변수t에 저장
- Tv타입은 기본형타입(primitive)이 아니라 참조형타입(reference)이므로 이렇게 객체를 생성해야 한다.
- 마치
String
처럼!
- ✨ 이 참조변수는 리모컨의 역할을 하기에 중요하다
- 참조변수는 '변수'다!!
-> 하나의 값을 가지거나 하나의 저장공간을 가리킨다
-> 참조변수 하나당 객체 하나가 생성된다.
2. 클래스 만들기
나중에 고치자ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ
class 객체이름 {
변수1, 2 선언
: private 또는 생략가능
public void 메소드이름1(매개변수1, 매개변수2){
this.변수1 = 매개변수1;
: ✨ 해당 전역변수인 변수1에 매개변수1을 넣는다.
this.변수2 = 매개변수2;
}
public void 메소드이름2(){
여기서 this.변수1 과 this.변수2를 사용한다.
}
class Tv {
String color; //색깔
boolean power; //전원상태, 기본이 false=전원이 꺼진 상태
int channel; //채널
void power() {
power = !power; //true로=전원을 켜라
}
void channelUp() {
++channel;
}
void channelDown() {
--channel;
}
}
3. 객체의 변수와 메소드 사용
1) 변수 사용하기
참조변수.클래스에있는변수명 = 대입할것;
예)t.channel = 7;
2) 매개변수 대입해서 메소드 사용하기
참조변수.클래스에있는메소드(대입할변수1, 대입할변수2);
: 객체에서 해당클래스에있는 메소드에 변수를 넣어 실행할 거야!
예)c1.setOprands(10, 20);
2) 매개변수 필요없는 메소드 사용하기
참조변수.클래스에있는메소드();
예)t.channelDown();
예)c1.sum();
-
✨✨이 객체명/참조변수는 리모컨의 역할을 한다. 반드시 호출할 때 요거 써야함!!
-
static
메소드는 객체&참조변수 안해도 된다 -> JAVA_18~
Node
- 만들 때 같은 src폴더 안에 class 생성 -> main메소드 포함 X
- node : 게임/인공위성.. 이차원공간에서의 위치, 좌표
- 따라서 좌표 x, y 필요
- ✨
private
: 외부에서 바꿀 수 없도록(외부패키지와 외부클래스에서 모두 해당 클래스에 접근할 수 없도록)
-> 보안성이 높다.
- private는 외부 패키지와클래스에서 접근불가로 보안이 가능하고 내부에있는 this.x가 매개변수인 int x를 가지고 x로 설정가능하다.- ✨
public
: 외부에서 접근 가능하도록(외부패키지와 외부클래스에서 모두 해당 클래스에 접근할 수 있도록)
- public은 내부 외부 모두 접근 가능하므로 Main에 있는 좌표가 Node에 int x와 int y에 대입이 된다.
Ref
Author And Source
이 문제에 관하여(JAVA_17_클래스와 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lecharl/JAVA17저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)