All :L

[Java] ์ƒ์† (Inheritance) ๋ณธ๋ฌธ

STUDY/Java

[Java] ์ƒ์† (Inheritance)

ofijwe 2024. 10. 20. 22:05
๋ฐ˜์‘ํ˜•

๐Ÿ“’ ์ƒ์†

1๏ธโƒฃ ์ƒ์† (Inheritance: OOP Is PIE)

  • ๊ธฐ์กด(์ƒ์œ„) ํด๋ž˜์Šค์˜ ์ž์‚ฐ(๋ฉค๋ฒ„)์„ ์ž์‹(ํ•˜์œ„) ํด๋ž˜์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ
    • ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์™€ ์ดˆ๊ธฐํ™” ๋ธ”๋ก์€ ์ƒ์† X
  • ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฅผ ๋ฌผ๋ ค ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์ ˆ๊ฐ
    • ์ƒ์œ„ ํด๋ž˜์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ํ•˜์œ„ ํด๋ž˜์Šค์—๋„ ์ ์šฉ → ์œ ์ง€ ๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
  • ์ƒ์†์€ extends ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ ์šฉ

2๏ธโƒฃ Object ํด๋ž˜์Šค

  • ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์กฐ์ƒ ํด๋ž˜์Šค
  • ๋ณ„๋„์˜ extends ์„ ์–ธ์ด ์—†๋Š” ํด๋ž˜์Šค๋Š” extends Object ๊ฐ€ ์ƒ๋žต๋จ.
  • ๋ชจ๋“  ํด๋ž˜์Šค์—๋Š” Object ํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ O

3๏ธโƒฃ ๋‹จ์ผ ์ƒ์† (Single Inheritance)

  • Java๋Š” ๋‹จ์ผ ์ƒ์†๋งŒ ์ง€์›
    • interface์™€ ํฌํ•จ ๊ด€๊ณ„(has a)๋กœ ๋‹จ์  ๊ทน๋ณต
  • ๋‹ค์ค‘ ์ƒ์† → ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ๊ธฐ๋Šฅ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ O / but, ๊ด€๊ณ„ ๋ณต์žก

4๏ธโƒฃ ํฌํ•จ ๊ด€๊ณ„

  • ์ƒ์† ์ด์™ธ์— ํด๋ž˜์Šค๋ฅผ ์žฌํ™œ์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • 2๊ฐœ ์ด์ƒ์˜ ํด๋ž˜์Šค์—์„œ ํŠน์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ํ•˜๋‚˜๋Š” ์ƒ์†, ๋‚˜๋จธ์ง€๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ์ฒ˜๋ฆฌ
    • ํฌํ•จ ๊ด€๊ณ„ UML ํ‘œํ˜„ → ์‹ค์„  ํ™”์‚ดํ‘œ
    • ์œ ์ง€ ๋ณด์ˆ˜์„ฑ ํ™•๋ณด
  • ์ƒ์†์„ ํ•  ๊ฒƒ์ธ์ง€ ํฌํ•จ์„ ํ•  ๊ฒƒ์ธ์ง€ ์ค‘์š”
  • ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๊ณ  ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”์ง€ ์ค‘์š” → ํ”„๋กœ์ ํŠธ ๊ด€์  ๋ฌธ์ œ
    • ์ƒ์†: is a ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š”์ง€
    • ํฌํ•จ: has a ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š”์ง€

๐Ÿ“’ ๋ฉ”์„œ๋“œ ์žฌ์ •์˜

1๏ธโƒฃ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding)

  • ์กฐ์ƒ ํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ ํ•ฉํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ
  • ์˜ค๋ฒ„๋กœ๋”ฉ → ๊ณ„์† ์ ์žฌํ•˜๋Š” ๊ฒƒ / ์˜ค๋ฒ„๋ผ์ด๋”ฉ → ๊ณ„์† ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ
  • ์กฐ๊ฑด → ์กฐ์ƒ๋ถ€์™€ ๋™์ผ
    • ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๋™์ผ (์กฐ์ƒ์ด ๋ฌผ๋ ค์ค€ ๋ฉ”์„œ๋“œ์™€)
    • ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜, ํƒ€์ž…, ์ˆœ์„œ ๋™์ผ
    • ๋ฆฌํ„ด ํƒ€์ž… ๋™์ผ
    • ์ ‘๊ทผ ์ œํ•œ์ž๋Š” ๋ถ€๋ชจ ๋ณด๋‹ค ๋ฒ”์œ„๊ฐ€ ๋„“๊ฑฐ๋‚˜ ๋™์ผ
    • ์กฐ์ƒ๋ณด๋‹ค ๋” ํฐ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ X

2๏ธโƒฃ super ํ‚ค์›Œ๋“œ

  • ๋‚˜์˜ ์กฐ์ƒ
  • this๋กœ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ–ˆ๋“ฏ์ด super๋ฅผ ํ†ตํ•ด ์กฐ์ƒ ํด๋ž˜์Šค ๋ฉค๋ฒ„ ์ ‘๊ทผ
    • super. ์„ ์ด์šฉํ•ด ์กฐ์ƒ์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋กœ ์กฐ์ƒ์˜ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ
  • ๋ณ€์ˆ˜์˜ scope
    • ์‚ฌ์šฉ๋œ ์œ„์น˜์—์„œ ์ ์  ํ™•์žฅํ•ด๊ฐ€๋ฉฐ ์ฒ˜์Œ ๋งŒ๋‚œ ์„ ์–ธ๋ถ€์— ์—ฐ๊ฒฐ๋จ
    • method ๋‚ด๋ถ€ → ํ•ด๋‹น ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ → ์กฐ์ƒ ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜
  • super()๋Š” ์กฐ์ƒ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
    • ์กฐ์ƒ ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋ฉค๋ฒ„๋“ค์€ ์กฐ์ƒ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ค„์ง€๋ฏ€๋กœ ์ด๋ฅผ ์žฌํ™œ์šฉ
    • ์ž์‹ ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋ฉค๋ฒ„๋“ค๋งŒ ์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™”
  • super()๋Š” ์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์˜ ๋งจ ์ฒซ ์ค„์—์„œ๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
    • ์ƒ์„ฑ์ž์˜ ์ฒซ ์ค„์—๋งŒ this() ๋˜๋Š” super()๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์Œ.
  • ๋ช…์‹œ์ ์œผ๋กœ this() ๋˜๋Š” super()๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ super() ์‚ฝ์ž…
    • ๋งจ ์ƒ์œ„ Object๊นŒ์ง€ ๊ฐ์ฒด๊ฐ€ ๋‹ค ๋งŒ๋“ค์–ด์ง€๋Š” ๊ตฌ์กฐ
    • class Person { String name; Person(String name) { this.name = name; } }
  • ์ƒ์„ฑ์ž ํ˜ธ์ถœ๊ณผ ๊ฐ์ฒด ์ƒ์„ฑ์˜ ๋‹จ๊ณ„
  • class Person { String name; Person(String name) { this.name = name; } } public class SpiderMan extends Person { Spider spider = new Spider(); boolean isSpider; SpiderMan(String name, Spider spider, boolean isSpider) { super(name); this.spider = spider; this.isSpider = isSpider; } SpiderMans(String name) { this(name, new Spider(), true); } public static void main(String[] args) { Spider sman = new SpiderMans("ํ”ผํ„ฐ ํŒŒ์ปค"); } }

3๏ธโƒฃ Annotation

  • ์‚ฌ์ „์  ์˜๋ฏธ → ์ฃผ์„ / ์ปดํŒŒ์ผ๋Ÿฌ, JVM, ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์ด ๋ณด๋Š” ์ฃผ์„
  • ์†Œ์Šค์ฝ”๋“œ์— ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ํ˜•ํƒœ
    • ์†Œ์Šค ์ฝ”๋“œ์— ๋ถ™์—ฌ ๋†“์€ ๋ผ๋ฒจ
    • ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •๋ณด ์ถ”๊ฐ€ → ์†Œ์Šค ์ฝ”๋“œ์˜ ๊ตฌ์กฐ ๋ณ€๊ฒฝ, ํ™˜๊ฒฝ ์„ค์ • ์ •๋ณด ์ถ”๊ฐ€ ๋“ฑ์˜ ์ž‘์—… ์ง„ํ–‰
  • ๊ธฐ๋ณธ Annotation
    • @Deprecated : ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ deprecated ๋˜์—ˆ๋‹ค๊ณ  ์•Œ๋ ค์คŒ
    • @Override : ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” overrideํ•œ ๋ฉ”์„œ๋“œ ์ž„์„ ์•Œ๋ ค์คŒ (๋ฐ˜๋“œ์‹œ super class์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ์—ฌ์•ผ ํ•จ)
    • @SuppressWarnings : ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์‚ฌ์†Œํ•œ warning์˜ ๊ฒฝ์šฐ ์‹ ๊ฒฝ ์“ฐ์ง€ ๋ง๋ผ๊ณ  ์•Œ๋ ค์คŒ

๐Ÿ“’ Package & import

1๏ธโƒฃ Package

  • PC์˜ ๋งŽ์€ ํŒŒ์ผ ๊ด€๋ฆฌ → ํด๋” ์ด์šฉ
    • ์œ ์‚ฌํ•œ ๋ชฉ์ ์˜ ํŒŒ์ผ ๊ธฐ์ค€
    • ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ณ„์ธต์  ์ ‘๊ทผ
  • ํ”„๋กœ๊ทธ๋žจ์˜ ๋งŽ์€ ํด๋ž˜์Šค → ํŒจํ‚ค์ง€ ์ด์šฉ
    • ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค๊ณ , . ์„ ํ†ตํ•ด ๊ณ„์ธต์  ์ ‘๊ทผ
    • ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํŒจํ‚ค์ง€๋Š” ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ
    • package name + class name์œผ๋กœ ํด๋ž˜์Šค ๊ตฌ๋ถ„ → fully qualified name
  • package ์„ ์–ธ
    • package package_name;
    • ์ฒซ ๋ฌธ์žฅ์— ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋งŒ ์„ ์–ธ
    • ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€์— ์†ํ•จ → ์ƒ๋žต ์‹œ default package์— ์†ํ•จ / but, ๊ฐ€๊ธ‰์  ์‚ฌ์šฉ X
  • ์ผ๋ฐ˜์ ์ธ package naming ํˆด
    • ์†Œ์†, ํ”„๋กœ์ ํŠธ, ์šฉ๋„

2๏ธโƒฃ import

  • ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์„ ์–ธ๋œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค์›Œ๋“œ
    • ํŒจํ‚ค์ง€์™€ ํด๋ž˜์Šค ์„ ์–ธ ์‚ฌ์ด์— ์œ„์น˜
    • ํŒจํ‚ค์ง€์™€ ๋‹ฌ๋ฆฌ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ ์–ธ ๊ฐ€๋Šฅ
  • ์„ ์–ธ ๋ฐฉ๋ฒ•
    • import ํŒจํ‚ค์ง€๋ช….ํด๋ž˜์Šค๋ช…;
    • import ํŒจํ‚ค์ง€๋ช….*; → ํ•˜์œ„ ํŒจํ‚ค์ง€๊นŒ์ง€ import ํ•˜์ง€ X
  • importํ•œ package์˜ ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋™์ผํ•˜์—ฌ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•  ๋•Œ → ํด๋ž˜์Šค ์ด๋ฆ„ ์•ž์— ํŒจํ‚ค์ง€ ๋ช… ์ž…๋ ฅ
  • default import package
    • java.lang.*;

3๏ธโƒฃ static import

  • static member์— ๋Œ€ํ•œ import
  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” static member๋ฅผ import ํ•˜์—ฌ static member ์ด๋ฆ„๋งŒ์œผ๋กœ ์ ‘๊ทผ

๐Ÿ“’ ์ œํ•œ์ž

1๏ธโƒฃ ์ œํ•œ์ž

  • ํด๋ž˜์Šค, ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์— ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๋ถ€๊ฐ€์ ์ธ ์˜๋ฏธ ๋ถ€์—ฌ
  • ์ข…๋ฅ˜
    • ์ ‘๊ทผ ์ œํ•œ์ž
      • public
      • protected
      • (default = package)
      • private
    • ๊ทธ ์™ธ ์ œํ•œ์ž
      • static : ํด๋ž˜์Šค ๋ ˆ๋ฒจ ์š”์†Œ ์„ค์ •
      • final : ์š”์†Œ๋ฅผ ๋” ์ด์ƒ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•จ
      • abstract : ์ถ”์ƒ ๋ฉ”์„œ๋“œ ๋ฐ ์ถ”์ƒ ํด๋ž˜์Šค ์ž‘์„ฑ
      • synchoronized : ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์—์„œ์˜ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ
  • ํ•˜๋‚˜์˜ ๋Œ€์ƒ์— ์—ฌ๋Ÿฌ ์ œํ•œ์ž ์กฐํ•ฉ ๊ฐ€๋Šฅ / but, ์ ‘๊ทผ ์ œํ•œ์ž๋Š” ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ˆœ์„œ ๋ฌด๊ด€ → but, ์ผ๋ฐ˜์ ์œผ๋กœ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ๋งจ ์•ž์— ๋‘ 

2๏ธโƒฃ final

  • ๋งˆ์ง€๋ง‰, ๋” ์ด์ƒ ๋ฐ”๋€” ์ˆ˜ ์—†์Œ
  • final class
    • ๋” ์ด์ƒ ํ™•์žฅํ•  ์ˆ˜ X
    • ์ƒ์† ๊ธˆ์ง€ → ์˜ค๋ฒ„๋ผ์ด๋“œ ๋ฐฉ์ง€
  • final method
    • ๋” ์ด์ƒ ์žฌ์ •์˜ ํ•  ์ˆ˜ X
    • overriding ๊ธˆ์ง€
  • final variable
    • ๋” ์ด์ƒ ๊ฐ’ ๋ณ€๊ฒฝํ•  ์ˆ˜ X
  • Blank final
    • ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜
    • final ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ดˆ๊ธฐ ๊ฐ’์ด ํ• ๋‹น๋˜์–ด๋ฒ„๋ฆฌ๋ฉด ๋ชจ๋“  ๊ฐ์ฒด๋Š” ๊ฐ™์€ ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
    • ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๊ฐ‘์„ ๋ณ€๊ฒฝํ•  ๊ธฐํšŒ X → ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑ์ž์—์„œ 1ํšŒ ์ดˆ๊ธฐํ™” ๊ฐ€๋Šฅ
    • ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™”๋ฅผ ๊ฐ€์ œํ•˜๋Š” ์—ญํ• 
  • static final
    • ๋‹จ์ง€ final๋งŒ ์žˆ์œผ๋ฉด ๊ฐ์ฒด๋งˆ๋‹ค ๊ฐ–๋Š” ๊ฐ’์œผ๋กœ ๊ณต์šฉ์„ฑ์ด ์—†์Œ
    • ์ง„์ •ํ•œ ์ƒ์ˆ˜๋Š” ๊ฐ์ฒด์™€ ๋ฌด๊ณ ๋‚˜ํ•˜๊ฒŒ ๋ชจ๋‘๊ฐ€ ๊ณต์šฉํ•˜๋Š” ๊ฐ’

3๏ธโƒฃ ์ ‘๊ทผ ์ œํ•œ์ž(Access modifier)

  • ๋ฉค๋ฒ„ ๋“ฑ์— ์‚ฌ์šฉ๋˜๋ฉฐ ํ•ด๋‹น ์š”์†Œ๋ฅผ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค์ •
  • method override ์กฐ๊ฑด ํ™•์ธ
    • ๋ถ€๋ชจ์˜ ์ œํ•œ์ž ๋ฒ”์œ„์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋„“์€ ๋ฒ”์œ„๋กœ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Private < Default < Protected < Public
  • ์ ‘๊ทผ ์ œํ•œ์ž ์ข…๋ฅ˜ & ์ฐจ์ด

4๏ธโƒฃ Sealed class

  • ๋ด‰์ธ๋œ ํด๋ž˜์Šค๋กœ ํŠน์ • ํด๋ž˜์Šค์—๊ฒŒ๋งŒ ์ƒ์† ๊ฐ€๋Šฅ
  • ์ƒ์† ๊ณ„์ธต ๋‚ด์—์„œ ์—„๊ฒฉํ•œ ์ œ์–ด
    • ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์œ ์ง€, ์˜๋„์น˜ ์•Š์€ ์ƒ์†์œผ๋กœ ์ธํ•œ ๋ณต์žก์„ฑ ๋ฐ ํ˜ผ๋ž€ ๋ฐฉ์ง€
    • ๋ช…ํ™•ํ•œ ์—ญํ• ๊ณผ ์ง๋ฌด ๋ถ„๋ฅ˜๊ฐ€ ์ค‘์š”ํ•œ ๊ฐœ๋…์— ์ฃผ๋กœ ์‚ฌ์šฉ
  • ์ž‘์„ฑ๋ฒ•
    • ํด๋ž˜์Šค์— sealed ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ → ์ƒ์†์„ ํ—ˆ๋ฝํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ permits ๋’ค์— ๋‚˜์—ด
      • sealed๊ฐ€ ์„ ์–ธ๋œ ํด๋ž˜์Šค๋Š” permits ๋ฐ˜๋“œ์‹œ ํ•„์š”
    • ๊ตฌํ˜„ ํด๋ž˜์Šค์— ํ•„์š”ํ•œ ํ‚ค์›Œ๋“œ
      • sealed : ๋ด‰์ธ๋œ ํด๋ž˜์Šค, ์ถ”๊ฐ€์ ์œผ๋กœ permits๋กœ ํ•˜์œ„ ํด๋ž˜์Šค ๋‚˜์—ด ํ•„์š”
      • final : ๋” ์ด์ƒ ์ƒ์† ๋ฐ›์„ ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค
      • non-sealed : ๋ด‰์ธ์ด ํ•ด์ œ๋œ ํด๋ž˜์Šค → ์ž์œ ๋กญ๊ฒŒ ์ƒ์† ๊ฐ€๋Šฅ
๋ฐ˜์‘ํ˜•

'STUDY > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ์ œ๋„ค๋ฆญ (Generic)  (2) 2024.10.28
[Java] ์ธํ„ฐํŽ˜์ด์Šค (Interface)  (0) 2024.10.26
[Java] ๋‹คํ˜•์„ฑ (Polymorphism)  (0) 2024.10.24
[Java] ์ถ”์ƒํ™” (Abstraction)  (0) 2024.10.18
[Java] ์ž๋ฐ” ๊ธฐ๋ณธ  (0) 2024.10.16
Comments