Java/이펙티브 자바(Effective Java)

[이펙티브 자바(Effective Java)] - 0. 들어가기에 앞서

얄루몬 2022. 4. 4. 16:12

📖본 포스팅은 'Effective java - 조슈아' 님의 책를 보고 작성되었습니다.


[들어가기에 앞서..]

  • 클래스와 객체(Object), 인스턴스(intstance)와 인스턴스화가 무엇인지 다시 확인하고 시작하자.

[클래스(class)]

  • 일반적으로 클래스는 설계도, 객체를 설계도로 실제 만든 물건, 사물을 이야기 한다.
  • 혹은 클래스를 붕어빵 틀, 객체를 붕어빵 틀로 찍어낸 붕어빵으로 표현한다.

[객체(Object)]

  • 객체는 기능과 속성으로 나눌 수 있다.
    • 이를 객체 멤버라 부른다. 
    • 객체 멤버 = 기능 + 속성
  • 기능
    • 메서드(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

 

[객체지향][자바의 정석] - 1. 클래스와 객체

6.1 클래스와 객체 1.1 클래스와 객체의 정의와 용도 클래스의 정의 - 객체를 정의해 놓은 것이다. 클래스의 용도 - 클래스는 객체를 생성하는데 사용된다. 객체의 정의 - 실제로 존재하는 것, 사물

yeomylaoo.tistory.com