본문 바로가기
IT/JAVA

JAVA - OOP , 클래스와 객체

by 삐약 개발자 2024. 11. 26.
반응형

OOP란?

Object-Oriented Programming - 객체지향 프로그래밍

모든 실재하는 어떤 대상을 프로그래밍 언어에서는 객체라고 부름

 

객체를 만들어야 그 사람이 객체를 소유할수 있음

자바에서의 모든것들은 객체임

 

객체지향적 프로그래밍은 "프로그래밍에서 필요한 데이터를 한 데 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 협력과 유기적인 상호작용을 통해 특정 기능을 구성"하는 프로그래밍 방법론을 지칭함

 

클래스를 만들기 위해 필요한 필드(Field)와 메서드(Method), 그리고 생성자(Constructor)

모든 클래스는 생성자를 가지고 있음.

껍데기를 추상화시키는걸 클래스

모든 객체는 클래스를 기반으로 만듬.

클래스는 설계도 라고 할수 있음.

클래스로 나온 객체는 같다고 할수 없음.

 

클래스와 객체

 

클래스

객체를 정의한 설계도 또는 틀이라 정의함

객체를 생성하는 데 사용되며, 반대로 객체는 클래스에 정의되고 설계된 내용 그대로 생성함

클래스 없이 객체 생성 불가능

클래스 하나에서 다양한 객체가 생성

클래스를 통해 생성된 객체를 우리는 해당 클래스의 인스턴스(instance)라 함

누군가의 타입이 될수 있음

 

객체와 인스턴스의 차이?

객체와 인스턴스는 같은 말이라 차이를 두는 것에 큰 의미는 없으며, 따라서 이 두 용어를 혼용하여 사용할 수 있음

 

클래스의 구성요소와 기본 문법

class 클래스명 { // 클래스 정의
	-- 생략 --
}

class Person{ //클래스는 항상 첫글자는 대문자
//속성(필드)
//행위(메서드)
}

클래스명은 띄어쓰기 불가능, 첫글자는 대문자!

클래스는 네가지의 요소로 구성되어 있음.

(필드, 메서드, 생성자, 이너클래스)

public class ExampleClass {
	int x = 10; // (1)필드
	void printX() {...} // (2)메서드
	ExampleClass {...} // (3)생성자
	class ExampleClass2 {...} // (4)이너 클래스
}

 

필드는 클래스의 속성을 나타내는 변수

메서드는 클래스의 기능을 나타내는 함수

생성자는 클래스의 객체를 생성하는 역할 - 클래스 이름도 동일해야 함(앞에 대문자도 똑같음)

이너 클래스는 클래스 내부의 클래스를 의미

 

위에 네가지중 생성자를 제외한 필드, 메서드, 이너 클래스는 클래스의 멤버 라고 부름

 

객체

객체는 크게 속성기능이라는 두 가지 구성요소로 이뤄져 있음

속성과 기능은 각각 필드메서드로 정의되는데, 일반적으로 하나의 객체는 다양한 속성과 기능의 집합으로 이뤄져 있습니다. 그리고 이러한 속성과 기능은 이너클래스와 함께 객체의 멤버(member)라 부름

객체 설명

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

	Car bmw = new Car(); // Car 클래스를 기반으로 생성된 bmw 인스턴스
	Car tesla = new Car(); // Car 클래스를 기반으로 생성된 tesla 인스턴스
	Car audi = new Car(); // Car 클래스를 기반으로 생성된 audi 인스턴스
}

 

객체의 생성

클래스명 참조_변수명; // 인스턴스를 참조하기 위한 참조변수 선언
참조_변수명 = new 생성자(); // 인스턴스 생성 후, 객체의 주소를 참조 변수에 저장

간편하게아래처럼 가능

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

 

참조변수 저장

객체와 생성 예시 코드 혼자 작성해보기

-> 여기에 추가하기

 

 

 

 

 

 

 

 

 

//나중에 볼만한 책//

디자인 패턴!?!? 

클린코드

반응형

'IT > JAVA' 카테고리의 다른 글

JAVA - 생성자(Constructor)  (1) 2024.11.26
JAVA - 필드(Field)와 메서드(Method)  (0) 2024.11.26
Java - 배열  (0) 2024.11.22
JAVA - 반복문 문제풀이  (0) 2024.11.22
Java - 형변환 정리  (0) 2024.11.21