본문 바로가기
Language/java

java 기초 5: 클래스와 객체

by S2채닝S2 2023. 1. 3.

객체와 클래스

객체

- (소프트웨어 공학 관점) 실제로 존재하거나 생각할 수 있는 것

- (객체 지향 프로그래밍) 현실에 있는 모든 것은 객체로 만들 수 있음

- 눈에 보이는 것부터 보이지 않는 것까지 실존하고 관념적인 것들은 모두 객체가 될 수 있음

 

클래스

- 객체로 만들 대상의 특징이나 기능을 잘 나타내도록 개념적으로 분류(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

최근댓글

최근글

skin by © 2024 ttuttak