객체와 클래스
객체
- (소프트웨어 공학 관점) 실제로 존재하거나 생각할 수 있는 것
- (객체 지향 프로그래밍) 현실에 있는 모든 것은 객체로 만들 수 있음
- 눈에 보이는 것부터 보이지 않는 것까지 실존하고 관념적인 것들은 모두 객체가 될 수 있음
클래스
- 객체로 만들 대상의 특징이나 기능을 잘 나타내도록 개념적으로 분류(classification)
- 정의된 클래스로부터 구체화하면 객체가 됨
클래스의 구성요소
속성(필드)
- 객체가 가지는 속성을 나타내는 변수
- 속성(property): 객체가 가진 고유한 특징
- 필드: 속성의 실체가 담기는 곳, 실제 값을 의미.
public class Person{
String name = "홍길동";
int age = 20;
}
// 속성은 name, age
// 필드는 "홍길동", 20
메소드(함수)
- 함수: 하나의 기능을 수행하는 코드 블록
- 메소드: 클래스의 구성요소. 객체가 가진 하나의 동작을 정의하며, 클래스 안에 구현함
*생성자
- 객체 생성을 담당하는 메소드로, 객체 생성 시 객채 초기화, 필드 초기화를 담당한다.
- 따로 정의하지 않아도 자바에서는 자동으로 매개변수가 없는 기본 생성자를 제공한다.
- 매개변수가 포함된 생성자를 정의할 경우, 매개변수가 없는 생성자 코드를 따로 작성해주어야 한다.
클래스 선언
- 속성을 정의하고 생성자와 메소드를 구성하여 선언한다.
public class Person {
//속성
String name;
int age;
//매개변수가 없는 기본 생성자
public Person(){}
//매개변수가 있는 생성자
public Person(String name, int age){
//생성과 동시에 필드 초기화
this.name = name;
this.age = age;
}
//나이가 같은지 결과를 반환하는 메소드
public boolean isEqualAge(int age1, int age2){
boolean result;
if (age1 == age2){
result = true;
}else{
result = false;
}
return result;
}
}
객체 생성과 인스턴스
인스턴스
- 정의된 클래스를 바탕으로 객체를 실체화한 것
- 힙(Heap) 메모리 영역에 객체가 생성됨
- 인스턴스화: 인스턴스를 만드는 과정(실체화 과정)
//인스턴스 생성
Person gildong = new Person("홍길동", 20)
필드에 접근하기
- 기본적으로 <변수명.속성>으로 접근
gildong.name //"홍길동"
gildong.age //20
- 클래스 내 속성에 직접적으로 접근하는 것은 위험성이 따르므로, getter, setter를 활용한다.
- getter: 한 객체의 필드값을 가져오는 메소드
- setter: 한 객체의 필드값을 초기화하는 메소드
- 속성 정의 시 private로 정의하여 직접 접근할 수 없도록 하고, getter, setter를 활용해 접근하는 방식을 사용한다.
public class Person {
//속성
private String name;
private int age;
public Person(){}
public Person(String name, int age){
this.name = name;
this.age = age;
}
//name속성의 getter
public String getName() {
return name;
}
//name속성의 setter
public void setName(String name) {
this.name = name;
}
//age속성의 getter
public int getAge() {
return age;
}
//age속성의 setter
public void setAge(int age) {
this.age = age;
}
}
//객체 생성
Person gildong = new Person("홍길동", 20);
//필드값 접근
System.out.println(gildong.getName()); // "홍길동"
System.out.println(gildong.getAge()); // 20
'Language > java' 카테고리의 다른 글
java 기초 7: String 클래스 (0) | 2023.01.04 |
---|---|
java 기초 6: 참조 변수 (0) | 2023.01.04 |
java 기초 4: 반복문(while, do~while, for)과 탈출(break, continue) (0) | 2023.01.02 |
java 기초 3: 조건문(if, switch) (0) | 2023.01.02 |
java 기초 2: 연산자와 항 (0) | 2023.01.02 |