1. 클래스와 객체
- 클래스 : 객체를 만들기 위한 설계도 (첫 글자는 대문자)
- 객체 : 실제로 존재하는 것 (사물, 논리, 개념, 무형의 것들도 객체가 될 수 있다.)
2. 클래스
2-1. 클래스 구조
- 속성 : 특징을 작성하는 곳으로 객체를 생성해야 접근 가능하다, 프로퍼티, 필드 라고도 한다. (예시 : 사람의 나이, 이름 등)
- 생성자 : 객체를 어떻게 만들지 정의해 놓는 것, 생성자가 있어야 클래스를 객체화 할 수 있다. (클래스 생성 시 기본 생성자가 자동생성됨)
- 기능 : 지난 시간에 배운 메서드로 표현, 기능을 구현한다.
2-2. 게터, 세터
- 게터 : 클래스의 속성을 가져올 때 사용되는 기능
String getName() {
return this.name;
}
int getAge() {
return this.age;
}
String getAddress() {
return this.address;
}
String name = person.getName();
int age = person.getAge();
String address = person.getAddress();
- 세터 :객체의 속성을 외부에서 설정할 수 있게 해주는 기능
void getName(String name) {
this.name = name;
}
void getAge(int age) {
this.age = age;
}
void setAddress(String address) {
this.address = address;
}
public class Main {
public static void main(String[] args) {
Person personA = new Person("gygim", 20);
Person personB = new Person("Steve", 15);
personA.setAddress("서울");
personB.setAddress("미국");
}
}
3. 래퍼클래스
- 기본자료형을 객체로 감싸는 클래스
- 기본형은 객체처럼 속성, 기능을 가질 수 없으나, 객체는 기능을 제공할 수 있다.
- 기본형을 감싼 객체를 만들어 기능을 제공하면 편리하게 데이터처리를 할 수 있다.
- 내부적으로 데이터를 감싸고 있어 연산시에는 불리하다.
3-1. 오토박싱
Integer num3 = 10;
Integer num = Integer.valueOf(10);
3-2. 오토언박싱
Integer num3 = 10;
int num = num3;
int a = num.intValue();
4. static, final
4-1. static 키워드
- 모든 객체가 같이 사용하는 변수나 메서드를 만들 때 사용
- 한 번만 생성되며 메서드 영역에 저장됨
- 객체를 만들지 않아도 클래스명.변수명 으로 접근 가능함
- static 은 공유가 필요한 상황에서만 사용해야함
- 프로그램 종료시 까지 유지되므로 남용하면 메모리 낭비가 생김
4-2. final 키워드
- 변수에 final을 붙이면 변경이 불가능 하게 만든다.
- final로 선언된 클래스는 상속이 불가능 하다.
- final로 선언된 메서드는 수정 할 수 없다.
4-3. 상수와 불변객체
- 상수는 변하지 않고 항상 일정한 값을 갖는 수로 java에서 대문자로 표현한다.
- 상수는 프로그램 실행 중 절대 변경되어서는 안되어서 static final 키워드를 사용해 선언한다.
- 불변객체는 내부 상태를 변경할 수 없는 객체로 '속성(property, field)' 에 활용한다.
- 불변객체는 세터 없이 설계하며 변경이 필요할 경우 새로운 객체를 만들어야 한다.
5. 마무리
- 클래스와 객체에 대한 설명을 들어보았다. 처음 배우는 입장에서 여러가지 개념을 한번에 집어넣으려고 하니 서로 섞여서 내용이 오히려 더 헷갈리게 되어가고 있는거 같아 다시 한번 차근차근 개념정리를 해야할 필요가 있는거 같다. 특히 불변객체에 대해서 공부할 때 새로운 객체를 만드는 것이 왜 변경한다고 하는지 아직 이해가 잘 되지 않아 여러 질문이 많이 생기는 하루였다.