클래스, 객체, 인스턴스

김민영·2023년 1월 19일
0

Java

목록 보기
3/14

설명

클래스 (Class)

  • 객체를 만들어 내기 위한 설계도. 툴.
  • 연관된 변수와 메서드 집합

객체 (Object)

  • 구현할 대상. 클래스를 통해 만듦.
  • 클래스에 선언된 모양 그대로 생성된 실체
  • "클래스의 인스턴스". 모든 인스턴스를 대표함
  • oop에서 클래스 타입으로 선언된 것을 객체라고 함.

인스턴스 (Intance)

  • 설계도(객체)를 바탕으로 구현된 실체
  • oop에서 객체가 메모리에 할당되어 사용되는 것을 인스턴스라고 한다.
  • 인스턴스는 객체에 포함된다.
  • ~ 의 인스턴스 형태로 사용된다.
    • 객체는 클래스의 인스턴스.
    • 객체 간의 링크는 클래스 간의 연관관계의 인스턴스
    • 실행 프로세스는 프로그램의 인스턴스
  • 인스턴스는 어떤 원본(추상적인 개념)으로부터 생성된 복제본

예시

class Animal {
    private int age;

    public void aging() {
        age++;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


public class test {
    public static void main(String[] args){
        System.out.println("123");

        Animal cat, worm; // 객체

        // 인스턴스화
        cat = new Animal();
        worm = new Animal();
        
//	      한 줄로 쓰면 다음과 같다.        
//        Animal cat = new Animal();
//        Animal worm = new Animal();
    }
}

추상화 기법

분류 Classification

  • 객체 -> 클래스
  • 실재하는 객체들을 공통 속성을 지닌 추상적인 개념으로 묶는 것.
    • 실제 동물을 클래스 Animal로 만듦. 움직임, 호흡함 등 공통 속성이 있음.

인스턴스화 Instantiation

  • 클래스 -> 인스턴스
  • 분류의 반대 기법. 범주나 개념으로부터 실재하는 객체를 만듦
    • 클래스 Animal에는 cat, worm이 있을 수 있음.
  • 클래스 내의 객체에 대해 특정한 변형을 정의하고, 이름을 붙인 후, 물리적인 장소(메모리)에 위치시키는 작업 == 인스턴스를 만든다.

객체 생성과 사용법

public class test {
    public static void main(String[] args){

        Animal cat = new Animal(); // 레퍼런스 변수 cat과 Animal 객체 생성

        cat.setAge(5); //멤버 함수(메소드) 호출을 통해 데이터 저장
        System.out.println(cat.getAge() + "살"); // 5살

        cat.aging(); // 멤버 함수(메소드) 호출
        System.out.println(cat.getAge() + "살"); // 6살
        
        System.out.println(cat); // Animal@2f4d3709 객체에 접근할 수 있는 메모리 주소

    }
}


class Animal {
    private int age; // 멤버 변수(필드)

    // 멤버 함수(메소드)
    public void aging() {
        age++;
    }

    public void showAge() {
        System.out.println(age);
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  • 변수 cat은 생성된 객체(인스턴스)에 접근할 수 있는 메모리 주소 정보를 가지고 있다.
  • Class마다 class 이름을 파일 이름으로 갖는 class 파일을 만든다.

    test.java (메인 파일)

public class test {
    public static void main(String[] args){

        Animal cat = new Animal(); // 레퍼런스 변수 cat과 Animal 객체 생성

        cat.setAge(5); //멤버 함수(메소드) 호출을 통해 데이터 저장
        System.out.println(cat.getAge() + "살"); // 5살

        cat.aging(); // 멤버 함수(메소드) 호출
        System.out.println(cat.getAge() + "살"); // 6살

        System.out.println(cat); // Animal@2f4d3709
    }
}

Animal.java (클래스 파일)

//public : 접근지정자. 클래스에 대한 접근권한 범위
//Animal : 클래스 이름
public class Animal {
    private int age; // 멤버 변수(필드)

    public Animal() { // 생성자 Constructor. __init__과 비슷한 듯 하다. 오버로딩 가능하다.

    }

    // 멤버 함수(메소드)
    public void aging() {
        age++;
    }

    public void showAge() {
        System.out.println(age);
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글