6. 클래스와 객체

InSeok·2022년 5월 15일
0

자바

목록 보기
6/9

참조 : Do it Java 완전정복
http://www.yes24.com/Product/Goods/103389317

클래스와 객체 개념

  • 객체(Object)는 사용할 수 있는 실체를 의미
  • 클래스는 객체를 만들기 위한 설계도
  • 구조체 : 서로다른 자료형도 1개의 자료형으로 묶어 관리가능
  • 클래스 : 다양한 자료형의 데이터를 묶어 관리할 수 있을 뿐 아니라 데이터를 처리하는 다양한 기능까지 함께 관리하는 문법요소
  • 클래스에 포함돼 클래스 안에 있는 데이터를 처리하는 기능을 ‘메서드’라고한다.

절차지향 과 객체지향

  • 절차지향형 프로그래밍(PP:Procedural Programming) : 순서에 맞춰 단계적으로 실행하도록 명령어를 나열하는 방식 - 기능중심
  • 객체지향형 프로그래밍(OOP: Object-Oriented Programming) : 프로그램을 객체 단위로 수행하는 방식 - 객체 중심
    • 각 객체에 포함된 데이터(속성or 필드)와 기능(메서드)을 상호 호출함으로써 프로그램을 구성하는방식
  • 자바는 프로그램을 객체 단위로 구성해 상호 연동시키으로써 프로그램 실행
  • 클래스나 인터페이스를 활용해 객체를 직간접적으로 만들고, 이를 활용해 프로그램 실행

클래스 구조

  • 클래스명은 대문자로 시작
  • 클래스의 정의 class 클래스명 { ... }
  • 자바 소스 파일구조
    • 클래스 밖에 올수 있는 4가지 package ; 1. 패키지 import; 2. 임포트 class 클래스명{...} 3. 외부클래스
    • 클래스 안에 올수 있는 4가지 public class A { → A는 파일명과 동일해야함 int a = 3; 1.필드 double abc() {...} 2. 메서드 A() {...} 3. 생성자 class 클래스명 {...} 4.이너클래스

클래스 외부 구성요소

  1. 패키지 : 주석제외 반드시 첫번째줄에 위치
  2. 임포트 : 다른 패키지의 클래스 사용하고자 할때 사용
  3. 외부클래스 : 1개의 .java파일에 여러개의 클래스 포함 가능

클래스 내부 구성 요소

  1. 필드: 클래스의 특징(속성) 을 나타내는 변수
  2. 메서드 : 클래스가 지니고 있는 기능(함수)
  3. 생성자: 클래스의 객체를 생성하는 역할
  4. 이너클래스
  • 클래스의 멤버 : 생성자를 제외한 (필드, 메서드, 이너클래스)

클래스와 객체(인스턴스) 구분하기

  • 클래스의 모든 특징(필드)와 기능(메서드)들을 사용하려면 클래스를 이용해 객체를 만든후 그 객체 속의 필드와 메서드등을 사용해야한다.
  • 인스턴스화 : 클래스의 생성자로 객체를 만드는과정
  • 인스터스: 인스턴스화로 만들어진 객체
  • 인스턴스 멤버 : 객체 속에는 클래스 내부구성요소중 생서자를 제외한 나머지 요소가 포함

객체의 생성과 활용

  • 클래스의 객체 생성
    • 클래스명 참조 변수명 = new 생성자(); ex) A a = new A(); → A() 생성자로 만든 객체를 힙 메모리에 넣고, 위칫값을 A타입의 참조변수 a에 저장하라!
    • new : ~을 힙 메모리에 넣어라 의미
    • 생성자: 클래스와 이름이 동일하지만, 뒤에 소괄호가 붙어 있다.
  • 메모리구조를 살펴보면 메서드 구현 코드는 클래스영역 안에 저장해 놓고, 객체 안에서는 메서드 영역의 위치만 가리키고 있다. → 1개의 클래스로 만든 모든 객체는 속성(필드)은 달라도 기능(메서드)은 동일하기 때문이다. → 객체를 100개 만들어도 메서드는 한번만 만들면된다. → 동일한 클래스로 만든 객체들은 기능(메서드)의 내용이 동일하므로 메서드 공유가능

객체 활용

  • 자바에서는 힙 메모리에 직접 접근 불가 → 위치 정보를 포함하고 있는 참조 변수를 이용해서만 객체 접근가능
  • 포인트 연산자(.) : 해당 위치에 있는 객체 안을 보라
  • 필드와 메서드 활용
    • 참조 변수명.필드명

    • 참조 변수명.메서드명()

      ex) A a = new A();

      System.out.println(a.m); //필드활용

      a.print(); //메서드 활용

profile
백엔드 개발자

0개의 댓글