1. 클래스와 객체의 정의
클래스란 객체를 정의해 놓은 것으로 객체를 생성하는 데 사용된다.
객체란 현실 세계에 존재하는 실제 사물이나 개념을 뜻하며 각 객체는 속성과 기능에 따라 다르다.
클래스가 설계 도면이라면 객체는 그 설계 도면을 이용해서 만든 제품이다. 예를 들어, 클래스가 붕어빵 기계라면 객체는 붕어빵인 셈이다.
*클래스 이름의 맨 앞글자는 항상 대문자이다.
*클래스는 ①사용자가 정의 클래스가 있고, ②라이브러리로 제공되는 클래스가 있다.
- 사용자 정의 클래스
- 라이브러리 제공 클래스 (예. System, Scanner... 등)
*객체 이름은 대문자로 쓰지 않는다. 대문자로 해도 에러가 나지는 않지만 암묵적인 약속임.
2. 객체의 멤버: 속성과 기능
객체는 속성과 기능으로 이루어져 있다. 예를 들어, 자동차 a라는 객체는 운전자: 홍길동, 차량번호: 123456라는 속성을 가지고 있으며, '운전하다'라는 기능을 가지고 있다. 이와 같은 속성과 기능을 객체의 멤버(member) 또는 구성 요소라고 한다.
클래스를 정의할 때 속성은 변수로, 기능은 메서드(함수)로 정의한다.
- 속성 - 변수
- 기능 - 메서드(함수)
3. 객체(인스턴스) 생성과 사용
// Car 클래스 정의
public class Car {
int number; // 멤버 변수
String driverName;
public void driving() { //멤버 함수 = 메서드(method)
System.out.println("운전중이에요 !!!");
}
}
public class Main {
public static void main(String[] args) {
Car a = new Car(); //객체의 생성
a.driving(); //객체의 사용
}
}
객체의 생성
클래스명 참조변수명 = new 클래스명();
예) Car a = new Car();
- 객체는 클래스 기반으로 new 키워드를 이용하여 생성한다.
- new 뒤에는 클래스 이름과 동일한 함수를 호출한다. 이 함수를 생성자라고 한다.
- 참조 변수명은 객체 이름이다.
- 객체의 이름은 소문자로 시작한다.
객체의 사용
객체이름(참조변수).메서드(or 속성)
예) a.drivig();
- 객체를 생성하고 객체에 점을 찍고 접근한다.
- 인스턴스 변수나 인스턴스 메서드와 관련된 작업을 한다.
- 메서드 내에서 인스턴스 변수 사용 가능하다.
* 클래스 메서드(static 메서드)
- 클래스 메서드는 객체 생성 없이 접근한다. 예) Math.random();
- 인스턴스 변수나 인스턴스 메서드와 관련 없는 작업을 한다.
- 메서드 내에서 인스턴스 변수를 사용할 수 없다.
- 메서드 내에서 인스턴스 변수를 사용하지 않으면 static을 붙이는 것을 고려한다.
3-1. 기본 자료형과 참조 자료형
기본 자료형은 값을 가지고 있는 변수이다. 예) int, boolean, char, float, double
참조 자료형은 기본 자료형이 아닌 모든 자료형으로 주소를 가지고 있는 변수이다. 예) 클래스로 만들어진 자료형 (클래스 이름의 맨 앞글자는 항상 대문자이다.)
3. 클래스의 정의
// Car 클래스 정의
public class Car {
int number; // 멤버 변수
String driverName;
public void driving() { //멤버 함수 = 메서드(method)
System.out.println("운전중이에요 !!!");
}
}
클래스는 멤버 변수와 멤버 함수로 구성되어 있다. 멤버 함수는 메서드라고 부른다. 클래스를 정의하면 자동으로 클래스 이름과 같은 함수, 생성자가 생성된다. 이 생성자는 어떠한 파라미터도 받지 않는 기본 생성자이다. 생성자의 파라미터를 받고 싶다면 직접 정의해야 한다.
'JavaScript' 카테고리의 다른 글
[Java] 문자열(String)비교 - 등가 비교 연산자(==)와 equals()의 차이 (0) | 2021.08.03 |
---|---|
[Java] 3항 연산자 (0) | 2021.07.23 |
[Java] 반복문 while과 do~while의 차이 비교 (0) | 2021.07.22 |
[Java] 클래스 getter/setter (0) | 2021.07.22 |
[Java] Advanced For Loop (향상된 for문) (0) | 2021.07.22 |