객체

Robyn·2023년 5월 1일
0

Java

목록 보기
9/15

객체지향언어

자바는 객체지향언어이다.

자바에서의 객체(Object)
★★★클래스에 정의된 내용대로 new 연산자를 통해 메모리 영역(Heap 영역)에 생성된 것★★★

객체 지향 언어 - 클래스


구조체 - 여러 개의 자료형, 여러 개의 데이터 (ex. 키, 몸무게같은 double값, 발 사이즈 int값, 이름 String값) (구조체의 특징)

클래스가 만들어지는 기반은 구조체부터 시작한다.
구조체 자체가 클래스는 아니다.
구조체 내의 데이터는 외부에서 볼 수 있고 수정, 삭제가 가능했다. (기능이 가능했다)
그래서 막, 캡슐 같은 걸 씌운다. 데이터 접근 제한을 둔다.
데이터를 가공하는 것은 기능.
캡슐 안에 데이터뿐만 아니라 기능까지 넣어서 데이터를 가공할 수 있게끔 한 것이 클래스이다.
클래스 = 구조체 + 기능

  • 클래스의 등장 배경
    캡슐화(외부에서 볼 수, 수정할 수, 삭제할 수 없도록 하는 것)를 통해 기능을 포함한 개념
    사물이나 개념의 공통 요소를 추상화(abstraction)하여 정의
    피카소, 눈, 코, 입, 대충 그린 것만 봐도 얼굴이라는 것을 알아차릴 수 있다.

  • 추상화(abstraction)
    '유연성을 확보'하기 위해 '구체적인 것은 제거'한다는 의미
    프로그램에서 필요한 '공통점을 추출'하고, '불필요한 공통점을 제거'하는 과정

객체 지향 언어 - 추상화




제일 위 Person은 클래스 이름이다.
데이터 접근제한자, -, private
-name : String
기능까지 더해지면 클래스가 된다.

클래스는 객체를 만들기 위한 도면이다.


클래스로 정의되어있는 것들은 모두 참조형 자료형
DimensionalArray da = new DimensionalArray();
Scanner sc = new Scanner(System.in);

객체 지향 3대 특징


객체 지향 3대 특징 (4대 특징엔 추상화도 들어간다)

  • 캡슐화 Encapsulation
    외부에서 데이터를 어떻게 할 수 없도록 구조체를 막아놓은 것
  • 상속 Inheritance
    클래스와 클래스 사이에 관계를 지어주는 것. A클래스를 부모 클래스로, B클래스를 자식 클래스로 만들어서 부모 클래스의 데이터, 기능을 자식 클래스에 그대로 물려주는 것. 자식 클래스는 상속받은 걸 갖다 쓸 수 있다.
  • 다형성 Polymorphism
    다양한 형태를 지니고 있다.
    하나의 객체가 여러 자료형에 담길 수 있다.

객체 지향 언어 - 캡슐화

  • 클래스의 ★멤버 변수(클래스 안에 있으면서 메소드 밖에 있는 변수)에 대한 접근 권한은 private을 원칙★으로 한다.
    private --> 나 자신만, 나만 접근할 수 있도록 만들겠다.
  • 클래스의 멤버 변수에 대한 연산처리를 목적으로 하는 함수들은/메소드들은 클래스 내부에 작성한다.
  • ★멤버 함수(메소드 안에 있는 변수)는 클래스 밖에서 접근할 수 있도로 public으로 설정★한다.
    데이터를 연산할 수 있는 기능(함수, 메소드)를 public으로 설정
    public --> 누구나 다 쓸 수 있다, 공용이다.

변수

  • 전역변수, 필드, 멤버필드, 멤버변수
    메소드 밖, 클래스 안
  • 지역변수
    메소드 안

사실 클래스와 객체의 구분을 그렇게 엄격하게 하지 않는다.


0개의 댓글