클래스와 객체

5BRack·2022년 6월 29일

자바란?

목록 보기
9/42

클래스와 객체

객체는 붕어빵, 클래스는 붕어빵틀

  • 객체는 사용할 수 있는 실체를 의미하며, 클래스는 객체를 만들기 위한 설계도와 같다.
  • 객체는 붕어빵, 클래스는 붕어빵틀이라고 생각하면 간단하다.

클래스와 구조체의 차이점
구조체 - 서로 다른 자료형을 1개의 자료형으로 묶어 관리하기 위한 용도
클래스 - 다양한 자료형의 데이터를 묶어 관리 뿐만이 아니라 데이터를 처리하는 다양한 기능까지 제공
차이점 : 클래스는 데이터처리기능(메서드) 까지 제공한다.


절차지향과 객체지향 이해

  • 절차지향형 프로그래밍 - 순서에 맞춰 단계적으로 실행
  • 객체지향 프로그래밍 - 프로그램을 객체 단위로 프로그래밍, 모듈단위로 프로그래밍

자바에서 제공하는 객체 지향 문법 요소

  • 일반 클래스
  • 추상 클래스
  • 인터페이스

클래스의 구조

  • 필드 - 클래스의 속성을 나타내는 변수(사람이 클래스일시, 나이,성별이 필드)
  • 메서드 - 클래스가 지니고 있는 기능(사람이 클래스일시, 일하기,게임하기 가 메서드)
  • 생성자 - 클래스의 객체를 생성하는 역할
  • 이너클래스 - 클래스 내부에 존재하는 클래스

    4가지 구성요소 중 생성자를 제외한 3가지 요소를 클래스의 맴버라고 한다.


클래스와 객체 구분

  • 클래스 생성자로 객체를 만드는 과정을 '인스턴스화' 라고 하고 인스턴스화로 만들어진 객체를 '인스턴스' 라고 한다.
  • 클래스는 바로 사용할 수 없고 반드시 객체를 생성해 객체 안에 있는 필드, 메서드 및 이너 클래스를 사용해야 한다.

객체 생성 방법

  • 객체는 new 키워드로 생성할 수 있다.
  • 참조변수명.필드명을 호출하면 객체의 필드를 참조할 수 있다.

클래스명 참조변수명 = new 생성자();

A a = new A();
String name = a.name;
System.out.println(name); //a객체의 name필드를 호출

필드

  • 클래스에 포함된 변수
  • 필드는 힙 메모리의 객체의 내부에 저장된다.

    "지역변수"는 메서드에 포함된 변수를 말한다.
    지역변수는 스택메모리에 생성된다. (삭제는 자신이 생성된 메서드가가 종료될 때 삭제된다.)


메서드

  • 메서드는 클래스의 기능에 해당하는 요소이다.
public static int sum(int a,int b){
	//매개변수 a,b를 이용해 데이터처리		
}

void -> 리턴타입이 void이면 메서드반환값이 없다라는 뜻이다.

오버로딩

  • 메서드 시그니처 - 메서드명과 , 입력매개변수 자료형으로 메서드를 구분하는 것
  • 즉 메서드명이 같아도 입력매개변수가 다르다면, 다른 메서드로 구분한다.
public static void print(){
	System.out.println("데이터가 없습니다.");
}

public static void print(int a){
	System.out.println(a);
}
  • print() 와 print(int a)는 서로 다른 메서드가 된다.

오버로딩과 오버라이딩의 차이

  • 오버로딩은 메서드 시그니처가 달라 다른 메서드로 구현하여 사용
  • 오버라이딩은 메서드 시그니처는 같지만 자식 클래스에서 동일 메서드를 수정하여 사용

생성자

  • 생성자는 객체를 생성하는 역할을 지닌 클래스 내부 구성 요소이다.

특징

  • 반드시 클래스명과 동일한 이름으로 지어야 한다.
  • 리턴타입이 없다.
  • 명시하지 않을 경우 기본생성자가 추가된다.
  • 생성자의 모양에 따라 객체를 생성하는 방법이 결정된다.

기본생성자

class A{
	A(){    // 기본생성자
    }
}

class B{
int a;     			// 필드생성;       
	B(int a){
    this.a = a;		// 객체 생성시, 바로 필드에 값 대입
    }
}

this 키워드

this

  • 모든 메서드에는 자신이 포함된 클래스의 객체를 가리키는 this라는 참조변수가 있다.
  • 필드 변수명 중 a 라는 변수명이 존재하고 매개변수 입력값으로 a라는 값이 있을시, 둘 중 this.a 라는 변수가 필드 변수명이다.
class B{
int a;     			// 필드생성;       
	B(int a){
    this.a = a;		//this.a가 필드  그냥 a가 매개변수입력값이다.
    }
}

this()

  • 자신이 속한 클래스 내부의 다른 생성자를 호출하는 방법이다.
  • 생성자 내부에서만 호출된다.
  • 생성자의 첫줄에서만 사용할 수 있다.
class B{
int a;     			// 필드생성;     
int b;

	B(int a){
    this.a = a;		//this.a가 필드  그냥 a가 매개변수입력값이다.
    }
    
    B(int a, int b){
    this(a);        //위에서 생성한 생성자 호출 - 내부의 기능도 그대로 가져온다.
    this.b = b;
    
    }
}


0개의 댓글