클래스
1 객체를 정의해 놓은 것 (설계도)
2 데이터 + 함수
3 사용자 정의 타입 - 원하는 타입을 직접 만들 수 있다.
- 용도 - 객체를 생성하는데 사용
객체
: 실제 존재하는 것, 사물 또는 개념
: 쉽게 생각하면, 변수를 여러 개 묶어 놓은 것
- 용도 - 객체가 가지는 기능과 속성에 따라 다름
- 객체 = 속성(변수) + 기능(메서드)
- 모든 인스턴스를 대표하는 용어 (인스턴스화: 클래스를 객체로 만드는 것)
ex) 클래스 : 객체 = 제품 설계도 : 제품
ex) 클래스 : 객체 = : TV 설계도 : TV
⭐ 변수 → 배열 → 구조체 → 클래스
- 변수: 하나의 데이터를 저장할 수 있는 공간
- 배열: 같은 종류의 데이터를 하나로 저장할 수 있는 공간
- 구조체: 서로 관련된 데이터를 (타입 관계없이) 하나로 저장할 수 있는 공간
- 클래스: 데이터와 함수의 결합 (구조체 + 함수)
💡 6-2~4 핵심
Q. 클래스가 왜 필요한가? A. 객체를 생성하기 위해
Q. 객체가 왜 필요한가? A. 객체를 사용하기 위해
Q. 객체를 사용한다는 것은? A. 객체가 가진 속성과 기능을 사용하는 것
1 클래스 작성하기 (설계도)
- 기본적으로는 하나의 소스파일에 하나의 클래스가 작성된다
- public class가 있는 경우 파일이름과 클래스명이 일치해야한다.
ex) Hello2.java
public calss Hello2 {}
// public calss Hello3 {} (X) public class should only be one
// public class Hello3 {} (X) public class should same with file name
- public class가 없는 경우는 2개 이상의 클래스도 상관없다. ex) 책 예제
ex) Hello2.java
class Hello2 {}
class Hello3 {}
// public class hello2 {} (X) public class should same with file name's case
2 객체 생성하기 (제품 생성)
클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv t = new Tv(); // Tv인스턴스 생성 후 생성된 Tv인스턴스의 주소를 참조변수 t에 저장
3 객체 사용하기 (제품 사용)
t.channel = 7; // Tv인스턴스의 멤버변수 값을 선언하기
t.channelDown();
객체 여러 개 생성하기
- 하나의 인스턴스를 여러개의 참조변수가 가리키는 것 → O
- 여러 인스턴스를 하나의 참조변수가 가리키는 것 → X
Tv t1 = new Tv();
Tv t2 = new Tv();
t2 = t1; // 하나의 인스턴스를 t1, t2 참조변수가 가리키게된다.
t1.channel = 7
System.out.println(t2.channel) // 7
객체 배열 == 참조변수 배열
참조변수 3개
Tv tv1 = new Tv();
Tv tv2 = new Tv();
Tv tv3 = new Tv();
참조변수 3개를 하나의 배열로 만든 객체 배열 (참조변수 배열)
Tv[] tvArr = new Tv[3]; // 길이가 3인 Tv타입의 참조변수 배열 (객체 배열)
// 객체 생성
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
// 위를 축약하면 Tv[] tvArr = { new Tv(), new Tv(), new Tv() };
비객체지향적 코드 → 객체지향적 코드
int hour = 12;
int min = 34;
int sec = 56;
👇
class Time {
int hour;
int min;
int sec;
}
Time t = new Time();
t.hour = 12;
t.min = 34;
t.second = 56;
선언 위치에 따른 변수의 종류
- 클래스 영역 - 클래스 변수 (cv), 인스턴스 변수 (iv)
- 클래스 영역에는 선언문만 가능 (변수 or 메서드 선언)
- 메서드 영역 - 지역 변수(lv)
💡 인스턴스 변수의 생성 시기는 인스턴스(객체)가 생성되었을 때 이다.
클래스 변수는 자동으로 생성된다. (따로 생성 안 해도 사용 가능)
클래스 변수 vs 인스턴스 변수
- 공통적으로 유지돼야하는 것은 static을 붙여야 한다.
Class Card {
// 인스턴스 변수 - 개별 속성
String kind;
int number;
// 클래스 변수 - 공통 속성
static int width = 100;
static int height = 250;
}
public static void main(String argsp[]) {
System.out.println("card width: " + Card.width + " height: " + Card.height);
Card c1 = new Card();
c1.kind = "heart";
c1.number = 7;
System.out.println("c1: " + c1.kind + " number: " + c1.number);
}
728x90
반응형
'객체지향 OOP' 카테고리의 다른 글
[자바의정석 기초 객체지향 개념] 참조변수 super, 생성자 super() (0) | 2022.05.30 |
---|---|
[자바의정석 기초 객체지향 개념] 오버로딩 VS 오버라이딩 (0) | 2022.05.30 |
[자바의정석 기초 객체지향 개념] 상속 VS 포함 (0) | 2022.05.30 |
[자바의정석 기초 객체지향 개념] 메서드 (0) | 2022.05.29 |
[자바의정석 기초 객체지향 개념] 0주차 (0) | 2022.05.29 |
댓글