오늘은 Java 문법 종합반 강의의 2강, 객체지향 이해하기 강의를 들었다.
자바를 이야기한다면 가장 먼저 생각나는 것이 '객체지향 언어'일 것이다.
자바는 하나의 기능을 '객체' 형태로 만들고, 그 객체들을 결합하여 하나의 프로그램으로 만들기 때문이다.
객체와 함께 가장 많이 등장하는 개념이 '클래스'이다.
클래스는 객체를 만들 때 필요한 설계도이고, 객체는 설계도를 참고해 만든 실제로 존재하는 것이다.
public class Person() {
// 속성(property, field)
String name;
int age;
// 생성자(constructor)
// 작성하지 않을 시, 'Person() {}' 자동으로 생성
Person(String name, int age) {
this.name = name;
this.age = age;
}
// 기능(method)
int sum(int a, int b) {
int result = a + b;
return result;
}
}
예를 들어, 위와 같은 형태로 Person이라는 클래스를 만들 수 있다.
Person 클래스 안에 name과 age라는 객체의 속성을 지정해두었고,
생성자를 통해 Person이라는 객체를 어떻게 만들지를 정해두었다.
그리고, 해당 객체를 통해 구현하고 싶은 기능을 메서드를 통해 작성해두었다.
void main() {
// 객체 생성
Person personA = new Person("seoyeon", 23);
// 객체를 통해 기능 구현
int result = personA.sum(1, 2);
System.out.println(result);
}
앞서 만들어둔 Person 클래스를 바탕으로 seoyeon이라는 name과 23이라는 age 값을 가진 personA를 만들었다.
그리고, personA에게 sum의 기능을 수행하도록 만들었다.
여기에 추가적으로 클래스의 속성을 가져올 때 사용하는 getter나 객체의 속성을 외부에서 설정하도록 하는 setter를 사용할 수도 있다.
또, static을 활용해서 클래스 내에서 모든 객체가 함께 사용하는 변수나 메서드를 생성할 수도 있고,
final을 통해 변수의 값이나 메서드를 수정할 수 없게 만들 수도 있다.
하나의 주제에 대한 여러 개의 클래스를 만들 때 규칙이 필요하기도 하는데,
interface를 사용한다면 클래스가 따라야할 최소한의 공통 규칙을 정의해둘 수도 있다.
그리고, 기본 자료형을 객체로 감싸는 wrapper class가 있는데,
기본 자료형에는 속성과 기능을 지정해줄 수 없기 때문에 기본 자료형을 감싼 객체를 만들어서 기능을 제공해주기 위해서 사용한다.
여기까지가 2강 강의의 초반부에서 다루는 객체지향을 이해하기 위한 내용들이다.
2강 강의는 객체지향의 4가지 특징까지 다루고 있지만, 편의를 위해 해당 내용은 3강으로 분류해서 정리를 하려고 한다.
2강에 대한 자세한 설명과 실습 내용은 노션을 통해 정리해두었다.
Notion 확인하기
드디어 자바의 메소드를 이해했다!
하지만... 메소드를 이해함과 동시에 또 다른 새로운 개념들이 생겼다...🥲
자바 강의를 다 들으면 자바의 첫 번째 개인 과제로 계산기를 만들어야 한다.
아직 내가 할 수 있을지 모르겠지만... 어떻게든 하나씩 하나씩 해봐야겠다.