23.02.23 객체 지향 프로그래밍(1)

김민성·2023년 2월 23일
0

학습목표

✍ 클래스와 객체의 차이에 대해 설명하고, 둘의 관계를 정의할 수 있다.
✍ 객체의 속성을 정의하는 필드를 이해하고, 세 가지 종류의 변수를 구분할 수 있다.
✍ 메서드 오버로딩을 이해하고 그 장점을 설명할 수 있다.


🌟 클래스와 객체의 정의

클래스 : 객체 그 자체가 아니라 단지 객체를 생성하는 데 사용되는 하나의 틀

객체 : 클래스를 통해 생성된 객체를 우리는 해당 클래스의 인스턴스(instance)라 부르고 클래스로부터 객체를 만드는 과정을 우리는 인스턴스화(instantiate)라 지칭한다.

쉽게 예를 들면 붕어빵 만드는 기계를 클래스라고 한다면 기계로 만드는 붕어빵이 객체라 할 수 있다.

🌟 클래스의 4가지 요소

클래스에는 필드(field), 메서드(method), 생성자(constructor), 그리고 이너 클래스(inner class) 요소가 있다.

🍒 필드 : 클래스의 속성을 나타내는 변수. 자동차로 예를 들면 모델명, 컬러, 바퀴의 수 등이 포함될 수 있다.

🍒 메서드 : 클래스의 기능을 나타내는 함수. 자동차를 예로 들면 시동하기, 가속하기, 정지하기 등이 포함될 수 있다.

🍒 생성자 : 클래스의 객체를 생성하는 역할을 함.

🍒 이너 클래스 : 클래스 내부의 클래스를 의미한다.

🌟 객체의 생성


다음과 같이 new 키워드를 사용하여 다음과 같이 실제 객체를 생성할 수 있다. 그리고 객체를 생성한 후에는 포인트 연산자(.)를 통해 해당 객체의 멤버에 접근이 가능하다.

🌟 필드의 변수

변수는 크게 클래스 변수(cv, class variable), 인스턴스 변수(iv, instance variable), 그리고 지역 변수(lv, local variable)라는 세 가지로 구분될 수 있다.

🍊 인스턴스 변수(iv) : 인스턴스가 가지는 각각의 고유한 속성을 저장하기 위한 변수로 new 생성자() 를 통해 인스턴스가 생성될 때 만들어진다.

🍊 클래스 변수 : 독립적인 저장 공간을 가지는 인스턴스 변수와 다르게 공통된 저장공간을 공유한다. 또한, 클래스 변수는 인스턴스 변수와 달리 인스턴스를 따로 생성하지 않고도 언제라도 클래스명.클래스변수명 을 통해 사용이 가능하다.

🍊 지역변수 : 메서드 내에 선언되며 메서드 내({} 블록)에서만 사용가능한 변수입니다.

🔥 static 키워드


StaticField 클래스에 인스턴스 필드(num1)와 정적 필드(num2)를 각각 선언하고, 대조를 위해 staticField1와 staticField2 객체를 생성했다.

num1의 경우에는 각각의 변수가 고유성을 가지기 때문에 100과 1000으로 따로 출력되는 반면에, num2의 경우는 앞서 배웠던 것처럼 값 공유가 일어나 1500이 출력값으로 두 번 반복되고 있음을 알 수 있다.

이처럼 static 키워드를 사용하면 모든 인스턴스에 공통적으로 적용되는 값을 공유할 수 있다.

🌟 메서드

메서드 : 특정 작업을 수행하는 일련의 명령문들의 집합을 의미

🍄메서드의 호출

🚨주의사항🚨 : 인자의 개수와 순서는 반드시 메서드를 정의할 때 선언된 매개변수와 일치되어야 한다.

🌟 메서드 오버로딩

메서드 오버로딩 : 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것을 의미.

위 예시를 보면 모든 메서드들이 area()라는 메서드명을 가지고 있음에도 불구하고 각기 다른 출력값을 리턴하는 것을 확인할 수 있다.

오버로딩을 위한 두가지 조건
🥕 같은 이름의 메서드명을 써줘야 한다.
🥕 매개변수의 개수나 타입이 달라야 한다.

오버로딩의 장점은 하나의 메서드로 여러 경우의 수를 해결할 수 있다는 것이다.

😁 오늘의 후기

오늘 드디어 자바에서 제일 중요하다고 들었던 파트인 객체 지향 프로그래밍 학습을 진행했다. 그래서 그런지 다른 때보다 더 집중하려고 노력을 했던 것 같다. 내일이면 벌써 부트캠프를 수강 한 지 2주가 된다. 시간 참 빨리 가는 것 같다...
남들 보다 느리고 더디더라도 나만의 페이스로 꼭 수료까지 완주하고 더 나아가 취업까지 해내야지! 내일도 공부 파이팅하자잇🐳

0개의 댓글