Bibi's DevLog ๐Ÿค“๐ŸŽ

[TIL] TreeMap, Properties, ์ž๋ฐ” ์ž๋ฃŒ๊ตฌ์กฐ / ๊ฐ์ฒด, ํด๋ž˜์Šค, ์ธ์Šคํ„ด์Šค, ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ, ํ•„๋“œ, ํ”„๋กœํผํ‹ฐ, ์ƒ์†, this, super ๋ณธ๋ฌธ

TIL

[TIL] TreeMap, Properties, ์ž๋ฐ” ์ž๋ฃŒ๊ตฌ์กฐ / ๊ฐ์ฒด, ํด๋ž˜์Šค, ์ธ์Šคํ„ด์Šค, ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ, ํ•„๋“œ, ํ”„๋กœํผํ‹ฐ, ์ƒ์†, this, super

๋น„๋น„ bibi 2021. 1. 17. 00:00

[210116]

์˜ค๋Š˜์€ ์ž์Šตํ•˜๋Š” ๋‚ . ๊ธฐ๋ณธ์„œ ์ง„๋„๋ฅผ ์กฐ๊ธˆ ๋‚˜๊ฐ€๊ณ , ์–ด์ œ์ž JK์ˆ˜์—…์„ ๋ณต์Šตํ•˜๋ฉฐ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

-> ๊ธฐ๋ณธ์„œ ๊ณต๋ถ€ + ๊ฐœ๋…์ •๋ฆฌ๋ฅผ ํ•˜๋‹ค ๋ณด๋‹ˆ ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ๊นŒ์ง€ ๊ณต๋ถ€ํ•  ์‹œ๊ฐ„์ด ๋ถ€์กฑํ–ˆ๋‹คใ…  ๋‹ค์Œ์— ์ด์–ด์„œ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค.

๊ทธ๋ž˜๋„ ํ—ท๊ฐˆ๋ฆฌ๋˜ ๊ฐœ๋…์„ ํ•œ ๋ฒˆ์— ์ •๋ฆฌํ•˜๊ณ  ๋ณด๋‹ˆ ์†์ด ์‹œ์›ํ•ด์„œ ์ข‹๋‹ค. ๋‚˜์ค‘์— ๋˜ ํ—ท๊ฐˆ๋ฆฌ๋ฉด ์—ฌ๊ธฐ๋กœ ์™€์•ผ์ง€.


TIL

์ž๋ฐ” ๊ธฐ๋ณธ์„œ ์ง„๋„(์ด์–ด์„œ)

TreeMap
  • Map์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ Key๋ฅผ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ.
  • (String ๊ธฐ์ค€) ์ˆซ์ž-์•ŒํŒŒ๋ฒณ๋Œ€๋ฌธ์ž-์•ŒํŒŒ๋ฒณ์†Œ๋ฌธ์ž-ํ•œ๊ธ€ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.
  • ๋ช‡๋งŒ ๊ฑด ์ด์ƒ์˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” HashMap์ด ๋” ๋น ๋ฅด๋‹ค.
  • SortedMap์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค๊ฐ€ ์ •๋ ฌ๋œ๋‹ค.
    (SortedMap์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋Š” ๋ชจ๋‘ ํ‚ค๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•จ)
    • ํ‚ค๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” firstKey(), lastKey(), higherKey(), lowerKey() ๋“ฑ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
Properties ํด๋ž˜์Šค
  • ์ž๋ฐ”์—์„œ ์‹œ์Šคํ…œ์˜ ์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค
  • Hashtable์„ extendsํ•จ.
  • ํŒŒ์ผIO์™€ ์—ฐ๊ด€์ด ๊นŠ๋‹ค - ํŒŒ์ผIO ๊ด€๋ จ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ œ๊ณตํ•˜๊ธฐ ๋–„๋ฌธ.
    • load(), loadFromXML(), store(), storeToXML()

XML : eXtensive Markup Language ์˜ ์•ฝ์ž๋กœ, ํƒœ๊ทธ<>๋กœ ๊ตฌ์„ฑ๋œ ํ…์ŠคํŠธ๋ฌธ์„œ๋ฅผ ์˜๋ฏธํ•จ.
๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ์˜ ํ‘œ์ค€ ํ˜•ํƒœ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. (์š”์ฆ˜์€ json์„ ์ฃผ๋กœ ์‚ฌ์šฉ)

์ž๋ฐ”์˜ ์ž๋ฃŒ๊ตฌ์กฐ ๊ฐ„๋‹จ ์ •๋ฆฌ
  • Collection
    • Set
      : ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ชฉ๋ก์ด๋ฉด์„œ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต๋˜๋ฉด ์•ˆ ๋  ๋•Œ ์œ ๋ฆฌ
      • HashSet, TreeSet, LinkedHashSet
    • List
      : ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ชฉ๋ก ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌ
      • ArrayList, LinkedList
    • Queue
      : ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ ์œ ๋ฆฌ (FIFO, ์„ ์ž…์„ ์ถœ)
      • LinkedList, PriorityQueue
  • Map
    • HashMap, TreeMap, LinkedHashMap

์ž์Šต

TCPschool, ์ ํ”„ ํˆฌ ์ž๋ฐ”๋ฅผ ์ฃผ๋กœ ์ฐธ๊ณ ํ•ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‡โ€โ™‚๏ธ

๊ฐ์ฒด object

  • ๊ฐ์ฒด๋ž€ ๋Œ€์ƒ, ์‚ฌ๋ฌผ์„ ๋œปํ•œ๋‹ค.
  • ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ OOP, Object-Oriented Programming
    : ๊ฐ์ฒด์˜ ์ƒํƒœ state์™€ ํ–‰๋™ behavior ์„ ๊ตฌ์ฒดํ™”ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ.

ํด๋ž˜์Šค class

  • ์ž๋ฐ”์—์„œ ํด๋ž˜์Šค๋ž€ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” "์„ค๊ณ„๋„"์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    • ์„ค๊ณ„๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์ œํ’ˆ์„ ๋งŒ๋“ค๋“ฏ, ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํด๋ž˜์Šค๋Š”..
    • ๊ฐ์ฒด์˜ ์ƒํƒœ state๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•„๋“œ field์™€,
      ํ•„๋“œ field : ํด๋ž˜์Šค์— ํฌํ•จ๋œ *๋ณ€์ˆ˜ variable๋ฅผ ์˜๋ฏธํ•จ. ( = **์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜, ๋ฉค๋ฒ„๋ณ€์ˆ˜)
    • ๊ฐ์ฒด์˜ ํ–‰๋™ behavior์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์†Œ๋“œ method๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
      *๋ฉ”์†Œ๋“œ method : ๋ช…๋ น๋ฌธ์˜ ์ง‘ํ•ฉ.

์ธ์Šคํ„ด์Šค instance

  • ์ธ์Šคํ„ด์Šคํ™” instantiate
    : ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ (=ํด๋ž˜์Šค๋ผ๋Š” ์„ค๊ณ„๋„๋ฅผ ํ†ตํ•ด ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ)
  • ์ž๋ฐ”์—์„œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ํ•ด๋‹น ํด๋ž˜์Šค ํƒ€์ž…์˜ ๊ฐ์ฒดObject๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•จ.
  • ์ธ์Šคํ„ด์Šค instance
    : ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„, ํ•ด๋‹น ํด๋ž˜์Šค ํƒ€์ž…์˜ ๊ฐ์ฒด.
    : ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•จ.
  • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋Š” ๊ฐ๊ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์— ์ž์‹ ๋งŒ์˜ ํ•„๋“œ๋ฅผ ๊ฐ€์ง.
class Car { // ํด๋ž˜์Šค - ์„ค๊ณ„๋„.
    public static void main(String[] args) {
        Car myCar = new Car(); // ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ์ƒ์„ฑ - Carํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค myCar
         String myCar.model = "Mini"; // myCar์ธ์Šคํ„ด์Šค์˜ ํ•„๋“œ - model๊ณผ color.
        String myCar.color = "black";
        int myCar.speed = 0;
    }

    public void accelerate() { // Carํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ
    }
}

์ธ์Šคํ„ด์Šค Instance ์™€ ๊ฐ์ฒด Object์˜ ์ฐจ์ด?

  • ํด๋ž˜์Šค์— ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • ์ฃผ๋กœ ์ธ์Šคํ„ด์Šค๋Š” ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์ธ์ง€๋ฅผ ๊ด€๊ณ„์œ„์ฃผ๋กœ ์„ค๋ช…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด,
Animal cat = new Animal()์ผ ๋•Œ
cat์ด๋ผ๋Š” ๊ฐ์ฒด๋Š”, Animalํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ด๋‹ค.

  • cat์€ ์ธ์Šคํ„ด์Šค์ด๋‹ค. (X)
  • cat์€ ๊ฐ์ฒด์ด๋‹ค. (O)
  • cat์€ Animal์˜ ๊ฐ์ฒด์ด๋‹ค. (X)
  • cat์€ Animal์˜ ์ธ์Šคํ„ด์Šค์ด๋‹ค. (O)

๋ฉ”์†Œ๋“œ method

  • ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๊ตฌํ˜„๋œ ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•จ.
  • ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น๋ฌธ์˜ ์ง‘ํ•ฉ.
  • ์ž๋ฐ”์—์„œ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ,
    • ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ•„๋“œfield์™€
    • ๊ธฐ๋Šฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์†Œ๋“œmethod ๋ฅผ ๊ฐ€์ง„๋‹ค.

ํ”„๋กœํผํ‹ฐproperty

  • ํ”„๋กœํผํ‹ฐ (์ถœ์ฒ˜ ์œ„ํ‚ค๋ฐฑ๊ณผ)
    : ์ผ๋ถ€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ•„๋“œ(๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„)์™€ ๋ฉ”์†Œ๋“œ ๊ฐ„ ๊ธฐ๋Šฅ์˜ ์ค‘๊ฐ„์ธ ํด๋ž˜์Šค ๋ฉค๋ฒ„์˜ ํŠน์ˆ˜ํ•œ ์œ ํ˜•. ํ”„๋กœํผํ‹ฐ์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ getter/setter๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.
    ์ž๋ฐ”์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋“ค์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ•œ ์Œ์˜ accessor(์ ‘๊ทผ์ž)์™€ mutator(๋ณ€๊ฒฝ์ž)๋ฉ”์†Œ๋“œ๋ฅผ ๋Œ€์‹  ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • property : ํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฐ์ดํ„ฐ ์š”์†Œ. ์ฆ‰, ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋งŒ๋“œ๋Š” ๋ณ€์ˆ˜.

๋ณ€์ˆ˜์™€ ํ”„๋กœํผํ‹ฐ์˜ ์ฐจ์ด?
(์ž๋ฐ”์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์œผ๋‚˜, ๊ฐœ๋…์ ์œผ๋กœ ์„ค๋ช…๋˜์–ด ์žˆ์–ด์„œ ์ผ๋‹จ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค)

  • ๋ณ€์ˆ˜ variable
    • ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ๋Œ€์‘๋จ.
    • ๋ณ€์ˆ˜๋Š” ๋‹จ์ผ ์„ ์–ธ๋ฌธ์œผ๋กœ ์ •์˜๋จ.
  • ํ”„๋กœํผํ‹ฐ property
    • ํ”„๋กœํผํ‹ฐ๋Š” ํด๋ž˜์Šค/๋ชจ๋“ˆ์— ์ •์˜๋œ ๋ฐ์ดํ„ฐ ์š”์†Œ.
    • ์ž๋ฐ”์—์„œ๋Š” ์ฃผ๋กœ getter / setter๋ฅผ ํ†ตํ•ด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•จ

์ƒ์† inheritance

  • ์ƒ์†์ด๋ž€ '๊ธฐ์กด์˜ ํด๋ž˜์Šค์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ'
    • ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ค‘์š”ํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
    • ์ƒ์†์„ ํ•ด ์ฃผ๋Š” ํด๋ž˜์Šค๋ฅผ
      ๋ถ€๋ชจ ํด๋ž˜์Šคparent class / ์ƒ์œ„ ํด๋ž˜์Šคsuper class / ๊ธฐ์ดˆ ํด๋ž˜์Šค base class ๋ผ๊ณ  ํ•œ๋‹ค.
    • ์ƒ์†์„ ๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ
      ์ž์‹ ํด๋ž˜์Šคchild class / ํ•˜์œ„ ํด๋ž˜์Šคsub class / ํŒŒ์ƒ ํด๋ž˜์Šค derived class ๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ƒ์†ํ•˜๊ธฐ
    • ์ž๋ฐ”์—์„œ๋Š” extends ๋ผ๋Š” ์˜ˆ์•ฝ์–ด๋ฅผ ํ†ตํ•ด ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
      ํด๋ž˜์Šค ์„ ์–ธ๋ถ€์—์„œ class ์ž์‹ํด๋ž˜์Šค๋ช… extends ๋ถ€๋ชจํด๋ž˜์Šค๋ช… ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์„ ์–ธํ•œ๋‹ค.
  • ์ƒ์†์˜ ์žฅ์ 
    • ๋ถ€๋ชจํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋ชจ๋“  public, protected๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์‹ํด๋ž˜์Šค๊ฐ€ ์ž์‹ ์˜ ํด๋ž˜์Šค์— ์„ ์–ธํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ๋ถ€๋ชจํด๋ž˜์Šค์˜ private, default๋ณ€์ˆ˜๋Š” ์ƒ์†์€ ๋ฐ›์ง€๋งŒ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
    • ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํด๋ž˜์Šค ๊ฐ„ ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • IS-A ๊ด€๊ณ„
    • ์ƒ์†๊ด€๊ณ„๋ฅผ ๋งํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ํ‘œํ˜„์ด๋‹ค.
      • ์˜ˆ๋ฅผ ๋“ค์–ด class Dog extends Animal {}๋กœ Dog ํด๋ž˜์Šค๊ฐ€ Animalํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•˜์„ ๋•Œ, Dog๋Š” Animal์— ํฌํ•จ๋˜๋Š” ๊ด€๊ณ„์ด๋‹ค.
      • ๋”ฐ๋ผ์„œ Dog is a Animal์ด๋ผ๋Š” ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•œ๋‹ค. -> is a ๊ด€๊ณ„.
    • is-a๊ด€๊ณ„์ผ ๋•Œ ์ž์‹ํด๋ž˜์Šค ๊ฐ์ฒด๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์˜ ์ž๋ฃŒํ˜•์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
      • Animal dog = new Dog(); ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. - ์—…์บ์ŠคํŒ… Upcasting
      • ์šฐ๋ณ€ ํด๋ž˜์Šค is a ์ขŒ๋ณ€ ํด๋ž˜์Šค ์˜ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•ด์•ผ ํ•œ๋‹ค. (Dog is a Animal)
      • ๋‹ค์šด์บ์ŠคํŒ… Downcasting
        • ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ.
        • instanceof ๋ผ๋Š” ์ž๋ฐ” ์˜ˆ์•ฝ์–ด๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค์˜ ์‹ค์ œ ํƒ€์ž…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

this์™€ super

  • this๋Š” "์ด ๊ฐ์ฒด"๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

    • ์ƒ์„ฑ์ž์™€ ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์•ฝ์–ด์ด๋‹ค.
    • ๋งค๊ฐœ๋ณ€์ˆ˜๊ณผ ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋ณ€์ˆ˜๋ช…์ด ๊ฐ™์„ ๋•Œ,
      ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด this.์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค.
  • super;๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • super.๋ฉ”์†Œ๋“œ๋ช…()๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํŠน์ • ๋ฉ”์†Œ๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.


1/16 ์˜ค๋Š˜์˜ ์˜๋‹จ์–ด

*property ํ”„๋กœํผํ‹ฐ * (n) ์†์„ฑ. / ์žฌ์‚ฐ,์†Œ์œ ๋ฌผ / ๋ถ€๋™์‚ฐ / ๊ฑด๋ฌผ
(ํ”„๋กœ๊ทธ๋ž˜๋ฐ) - ์ถœ์ฒ˜ ์œ„ํ‚ค๋ฐฑ๊ณผ
์ผ๋ถ€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ•„๋“œ(๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„)์™€ ๋ฉ”์†Œ๋“œ ๊ฐ„ ๊ธฐ๋Šฅ์˜ ์ค‘๊ฐ„์ธ ํด๋ž˜์Šค ๋ฉค๋ฒ„์˜ ํŠน์ˆ˜ํ•œ ์œ ํ˜•. ํ”„๋กœํผํ‹ฐ์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ getter/setter๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.


์ด์–ด์„œ ํ•ด์•ผ ํ•˜๋Š” ๊ณต๋ถ€

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ‚ค์›Œ๋“œ ์ค‘์‹ฌ ๊ณต๋ถ€ + JK์ˆ˜์—…๊ณผ ์ฐธ๊ณ ์ž๋ฃŒ ํ†ตํ•œ ๋ณต์Šต.

SOLID์›์น™ ์—์„œ SRP๋‹จ์ผ์ฑ…์ž„์›์น™, OCP๊ฐœ๋ฐฉ-ํ์‡„์›์น™, LSP๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ ์ •๋ฆฌ

๋‹คํ˜•์„ฑ polymorphism

์บก์Šํ™” encapsulation

์ถ”์ƒํ™” vs ๊ตฌ์ฒดํ™”

Classification ๋ถ„๋ฅ˜

Indirection ๊ฐ„์ ‘์ฐธ์กฐ

instance reference