객체

한상우·2022년 9월 27일
0

java

목록 보기
3/16

개체와 객체는 다른 것이다.

객체

메소드

  • static을 쓰면 클래스를 통해서 사용되는 함수 (스태틱 메소드)
  • static을 안쓰면 객체를 통해서 사용되는 함수 (인스턴스 메소드)
class Exam {
    private int kor;
    private int eng;

    public void print() {
        System.out.println(kor+eng);
    }

    public static void printStatic() {
        System.out.println("this is static");
    }
}

public class App {

    public static void main(String[] args) {

        Exam exam = new Exam();
        exam.print();
        Exam.printStatic();
    }
}

exam.print()로 메소드를 호출하게 되면 exam이라는 객체가 print로 넘어가게 되는 것
이를 인스턴스를 통해 호출되는 함수라고 함.
print() 함수 내부에는 넘어온 객체를 사용할 수 있는 것이고, 이때 this 를 통해
exam 객체 내부의 구성요소에 접근할 수 있는 것이다.
-> this 라는 이름으로 참조하고 있는 것

참고) exam.print()를 하게 되면 0 이 나오는데, 기본적으로 힙에 올라간 애들은 초기화가 된다.

캡슐

캡슐: 데이터와 함수를 묶어 놓은 단위
캡슐화: 데이터와 함수를 하나로 묶는 작업
-> 고립화를 위해, 캡슐 밖의 변화에 영향을 받지 않기 위해 캡슐화 함

  • 캡슐이 깨졌다??
    -> 내 캡슐의 데이터 구조를 변경했을 때 외부에 영향을 미치는 것
    -> 캡슐이 깨지지 않게 하기 위해 private, public 을 사용한다. (은닉성)

구조체

int id;
String name;

→ 무슨 데이터지???
class Student {
	int id;
	String name;
}

→ 학생에 대한 정보구나!!

사용자가 생각하는 데이터 형식이 보인다
이를 사용자 형식이라고 할 수 있다.

case1.

name1 = “kim”
name2 = “han”

case2.

Student stu1 = new Student();
stu1.name= “kim”

Student stu2 = new Student();
stu2.name = “han”
  1. 코드의 가독성이 좋아진다
    a. 데이터를 내가 생각하는 단위로 볼 수 있게 한다
  2. 변수 충돌에 대한 걱정이 없다
  3. c언어에는 포인터가 있지만 자바는 포인터가 없어져 참조만 있는 상황, 데이터 공유를 못하게 되어 공유하고자 하는 것을 구조체나 캡슐로 만들었음

캡슐과 구조체의 차이

구조체: 데이터를 묶기 위한 도구
캡슐: 함수를 묶어 놓기 위한 도구

profile
안녕하세요 ^^

0개의 댓글