본 글은 생활코딩 egoing 님 강의의 리뷰입니다!
자바 객체의 클래스, 인스턴스, 기본 틀이 너무 이해가 안되었는데, 역시 갓고잉님.. 날 이해시켜주었다.
천천히 가보자.
Class
우선 OthersOOP 라는 class 내에 존재하는 글임을 확인할 수 있다. 이 코드 또한 일종의 Class 인 셈.
우선, 이 글에서 Class 는 몇개일까? 답은 4개이다. OthersOOP, System, Math, FileWriter.
우선 Class 를 정의해보자. Class란 무엇일까?
변수와 메소드를 담고 있는 일종의 껍데기
라고 할 수 있다. 그렇기 때문에 Math라는 Class 뒤에는 .PI, .floor, .ceil 이라는 method 와 1.8이라는 변수 가 올 수 있다.
Class 내에서 하는 일이 단순하다면, 이렇게 Method 와 변수만으로 뚝딱 결과물이 나오게 할 수 있다.
하지만, Class 내에서 하는 일이 길고 복잡하다면 어떨까?
이 경우가 이제 하는 일이 길고 복잡한 경우에 Class 를 사용하는 법이다. 우선 Class 는 FileWriter 이고, 이 클래스의 기능은 새로운 파일을 열어 거기다가 무언가를 작성하게 하는 것 이다.
첫번째 문장이 중요하다. 그 내포된 뜻은 다음과 같다.
FileWriter 라는 Class로 data.txt 라는 이름의 파일을 열었으며, 이 클래스의 복제본을 만들었고, 이를 FileWriter 라는 자료형을 갖는 변수명 f1이라는 곳에 저장했다
라는 뜻이다.
흥미로운 점은 다음과 같다.
FileWriter 라는 클래스가 변수명으로 사용이 될 수 있다!
FileWriter 클래스가 .lang 에 포함되어 있지 않기 때문에, 위에 따로 선언을 해주어야 한다. 그리고 클래스에 입력이 없을 경우 예외 처리를 해주기 위해 Exception 이 들어가게 되고, 이를 위해 또 따로 선언이 된다.
Instance
Instance 라는 개념을 소개하려고 한다. 이는 위에서 보면 f1, f2 에 해당한다. 이것이 의미하는 바는 다음과 같다.
인스턴스란 복사된 특정한 Class 를 의미한다!
class 를 설계도에 비유한다면, instance 는 설계도를 기반으로 만들어진 여러가지 제품을 의미한다. 제품은 설계도를 기반으로 만들어지지만, 니즈에 맞게 세부사항이 상이할 수 있다.
객체
객체는 class 와 유사하지만 class보다는 넓은 개념이다. 우선 객체란
객체란 변수와 메소드의 집합을 의미한다.
따라서 class는 객체에 해당이 된다고 파악하면 된다.
멤버
멤버란 변수 또는 메소드가 인스턴스 소속인지 혹은 클래스 소속인지를 표현하는데 사용된다.
그냥 쉽게 생각해서 객체의 구성요소(변수, 메소드)의 소속을 나타낼때 쓰이는 용어이다.
그런게 뭐가 중요하냐 생각이 들수 있지만, 막상 코딩을 할땐 굉장히 신경써야 하는 지표이다.
static 이 붙으면 해당 변수의 소속이 Class에 해당이 된다.
따라서 static double PI 는 class 멤버이고, int left, right 는 instance 멤버이다.
메소드의 경우에도 static 이 붙으면 class 멤버, 붙지 않으면 instance 멤버 라고 할 수 있다.
만일 메소드가 인스턴스 멤버라면 인스턴스를 꼭 선언해 준 후 변수 선언을 해야한다.
하지만 메소드가 클래스 멤버라면 인스턴스를 선언하지 않고 클래스.메소드(변수) 형식으로 사용할 수가 있다.
인스턴스메소드는 실행을 하기 위해선 인스턴스 선언을 꼭 해줘야 한다는 사실을 알 수 있다.
하지만 클래스메소드는 실행을 할때 인스턴스 선언을 해주지 않아도 되어 간편하다.
'개발 > Java' 카테고리의 다른 글
[Java] main 메소드 앞에 public 이 와야하는 이유 (0) | 2022.11.07 |
---|---|
[Java] class를 활용해 중복을 줄여나가기 (0) | 2022.10.27 |
[Java] 이클립스 단축키 모음 (0) | 2022.10.27 |
[Java] 클래스로 변수를 받는 법과 메소드로 변수를 받는 법 (0) | 2022.02.18 |
[Java] 기본용어 정리(클래스, 메소드, static, void, public, private, main, super, this, overriding, overloading) (0) | 2022.02.18 |