Frog is cry
Day09 본문
클래스(반)
공통적인 요소들이 모여있는 곳.
1. 주어이다.
Monkey.eat("바나나");
원숭이가 먹는다 바나나를
주어 동사 목적어
영어는 항상 주어가 앞에 나오고,
맨 앞에는 대문자로 시작한다. 바로 클래스가 주어이다.
2. 타입이다.
선언이 반복되면 효율이 떨어지고 처리비용이 증가한다.
그래서 반복적인 선언을 묶고 이름을 붙여서 관리하고
이 것을 클래스라고 부른다.
클래스에는 한 번씩만 선언하고 선언된 요소들을
필드 또는 멤버라고 한다. 만약 클래스에 있는 필드를
사용하고 싶다면 그 클래스 타입의 변수를 선언해야
사용가능하다. 이 때 이 변수를 객체라고 한다.
클래스 선언
class 클래스명{
필드(객체, 메소드)
}
클래스 사용
객체화
클래스명 객체명 = new 생성자();
클래스는 추상적이다. 추상적인 개념을 구체화 시킨 것을 객체라고
부르며, 객체로 필드에 접근하는 방식으로 자주 사용된다.
하지만 객체로 필드에 접근하기 위해서는 그 필드가 어디에 위치한지
알아야 찾아갈 수 있기 때문에 필드를 메모리에 할당해주는 작업이
필요하다. 생성자의 역할이 바로 필드를 메모리에 할당한 후 그 필드
의 주소값을 갖고 오는 역할이다. 따라서 객체는 필드의 주소를
갖고 있으며 .(하위 연산자, 멤버변수 접근 연산자)를 통해서
그 주소로 접근할 수 있게 된다(객체명.필드명).
객체화는 영어로 instance이고, 객체는 instance variable이다.
클래스 안에 있는 변수들도 클래스를 구체화시키고 있기 때문에
객체 또는 인스턴스 변수라고 부른다.
this
하나의 클래스에는 여러 개의 객체가 존재한다.
그런데 클래스 안에는 한 번만 선언하고, 하나의 메소드로
수많은 객체들이 접근하게 된다. 이 때 하나의 메소드로
각 객체를 구분해야 정확한 값을 처리할 수 있고, 객체별로
가지고 있는 주소가 모두 다르다(new를 사용할 때마다 새롭게 할당)
따라서 접근한 객체가 가지고 있는 주소를 구분점으로 삼게 되면
하나의 변수로도 수많을 객체들의 필드에 접근 할 수 있다.
이 변수의 이름이 바로 this이다.
클래스 선언시 내부적으로 만들어지기 때문에 직접 만들필요는 없다.
생성자
생성자는 이름 뒤에 소괄호가 있다. 그래서 메소드와 똑같은
기능을 갖고 있으나, 메소드라고 부르지 않는다.
생성자는 필드의 주소를 리턴해야하기 때문에 리턴을 따로
적지 않기 때문이다. 클래스명 뒤에 소괄호(클래스명())가 있다면
절대 메소드로 부르지 않고 생성자라고 부른다.
1. 필드를 메모리에 할당하고 할당된 주소를 다시 가지고 온다.
2.
기본 생성자
클래스를 선언하면 코드상에 보이지 않지만 내부적으로
기본 생성자가 선언된다. 만약 사용자가 직접 생성자를 선언하면
선언한 생성자가 기본 생성자가 된다.
Comments