📖본 포스팅은 'Effective java - 조슈아' 님의 책를 보고 작성되었습니다.
[들어가기에 앞서..]
- 클래스와 객체(Object), 인스턴스(intstance)와 인스턴스화가 무엇인지 다시 확인하고 시작하자.
[클래스(class)]
- 일반적으로 클래스는 설계도, 객체를 설계도로 실제 만든 물건, 사물을 이야기 한다.
- 혹은 클래스를 붕어빵 틀, 객체를 붕어빵 틀로 찍어낸 붕어빵으로 표현한다.
[객체(Object)]
- 객체는 기능과 속성으로 나눌 수 있다.
- 이를 객체 멤버라 부른다.
- 객체 멤버 = 기능 + 속성
- 기능
- 메서드(method)
- 메서드 이름
- 매개변수
- 메서드(method)
- 속성(property)
- 변수나 상수 참조변수 등이 이 안에 올수 있다.
클래스의 인스턴스와 배열은 객체라고 불린다. 그러나 기본 타입 값의 경우엔 객체로 분류되지 않는다.
[property와 field의 차이?]
public class Duckgoo {
private String name;
private int old;
public Duckgoo(String name, int old) {
this.name = name;
this.old = old;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getOld() {
return old;
}
public void setOld(int old) {
this.old = old;
}
}
객체지향에서 객체는 고유한 속성(==특징)을 가지는 데, 그 속성을 칭하는 단어를 property 라고 합니다. 그리고 이 속성의 실체가 담기는 곳이 필드(멤버 변수)입니다.
덕구라는 객체는 name과 old라는 속성을 가지고 있는 객체이고,
java bean 정의에 의한 getter() 와 setter() 메소드로 실제 값(필드)
(예: 이름 = 덕구, 나이 =12살)에 접근할 수가 있습니다.
이처럼 속성과 필드는 서로 개념이 같지만, 근간은 조금 차이가 납니다.
참고로 재미 삼아 말씀드리면 자바스크립트는
var duckgoo = {old : 12, name : 'duck'}; duckgoo 라는 객체가 있다고 할 경우에,
old와 name을 property라고 부릅니다.
도움이 되셨으면 좋겠네요.
📌출처: https://okky.kr/article/455024?note=1407252
[클래스의 멤버]
- 필드
- 메서드
- 메서드 이름
- 매개변서
- 멤버 클래스
- 멤버 인터페이스
[자바의 지원 타입]
- 인터페이스
- 애너테이션은 인터페이스에 포함된다.
- 클래스
- 열거타입(Enum)은 클래스에 포함된다.
- 배열
- 기본(primative)타입
인터페이스, 클래스, 배열의 경우엔 참조타입이라고 불린다.
[꼭 알아두자]
*하나의 인스턴스를 여러 참조가 가르킬 수 있지만 하나의 참조가 여러개의 인스턴스를 가르키는 것은 불가하다.
https://yeomylaoo.tistory.com/221?category=917425