패키지는. java파일의 모임이다.
1. 디폴트 접근제어자(아무 접근제어자도 명시돼 있지 않을 때) = 동일한 패키지에서만 접근 가능
2. public 접근 제어자 = 모든 곳에서 접근할 수 있다.
3. private 접근 제어자 = 동일한 클래스에서만 접근 가능
4.protected 접근제어자 = 패키지 내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근 가능
클래스 = class = 설계도
class= 설계도 이기 때문에 강아지 클래스를 만들어보는데 이때 강아지의 종류인 type필드는 변경해서는 안되기 때문에 final이라는 키워드를 사용해서 변경할 수 없도록 해주었다.
하지만 클래스에서 필드를 저렇게 초기화시켜 줘 버리면 해당 클래스는 위와 같은 특징을 가진 강아지 한 마리만 만들 수밖에 없다.
그렇기 때문에 클래스는 필드를 초기화하지 않는다
그럼 어떻게 클래스를 사용해야 할까?
생성자
디폴트 생성자는 생성자 메서드에 매개변수가 없는 것을 뜻한다.
위와 같이 생성자를 활용하면 하나의 강아지 클래스를 만들어서 개발자가 원하는 만큼의 강아지를 만들어 낼 수 있는 것이다.
this
다시 이 코드를 보다 보면 조금 이상한 점이 있다. 바로 생성자의 매개변수로 있는 n과 a가 Dog클래스에 있는 age와 name과는 다른 곳에 있다는 것이다.
this는 자기 자신의 heap공간에 있는 필드를 가리킬 수 있다. 즉 stack공간에 있는 생성자의 매개변수를 heap공간에 옮긴 것이다.
this는 자기 자신을 가리키는것이다. 개발자의 입장에서 보면 new로 여러 마리의 Dog를 만들 수 있지만 그렇게 만들어진 각자 하나하나의 자기 자신을 가리키는 문법인 것이다.
클래스를 만들 때 규칙
- 상태를 초기화하지 않는다.
- 초기화는 생성자를 통해서 한다.
- this는 자기자신(필드)을 가리키는 문법이다
'JAVA,객체지향' 카테고리의 다른 글
다형성 (0) | 2021.11.21 |
---|---|
클래스? 오브젝트? 인스턴스??? (0) | 2021.11.21 |
자료형이란? (0) | 2021.11.18 |
AWT/JFrame 사용해서 그림그려보기 (0) | 2021.11.17 |
AWT 라이브러리 개념 (그림 그리는 라이브러리) (0) | 2021.11.17 |