๋ชฉ๋กKITRI/JAVA (35)

๐Ÿ’ป

Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - [๊ธฐ๋ณธ API ํด๋ž˜์Šค] Object ํด๋ž˜์Šค(equals(), toString())

[์ฐธ๊ณ ] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ ๋ฐฉ๋ฒ• 1. ํ”„๋กœ์ ํŠธ ํด๋” ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ์šฐํด๋ฆญ > Export > Java > JAR file 2. ์›ํ•˜๋Š” ํด๋ž˜์Šค ์„ ํƒ> next > finish ๋‹ค๋ฅธ ํด๋”์—์„œ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค๋ฅผ importํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. import api01.Object.(ํด๋ž˜์Šค๋ช…); ๊ฐ์ฒด ๋น„๊ต equals() : Object ํด๋ž˜์Šค์˜ eqauls() ๋ฉ”์†Œ๋“œ๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž์ธ ==์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๋‘ ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ๊ฐ์ฒด๋ผ๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ฐ์ฒด ๋ฌธ์ž ์ •๋ณด toString() : Objectํด๋ž˜์Šค์˜ toString() ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ์ฒด์˜ ๋ฌธ์ž ์ •๋ณด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ฐ์ฒด์˜ ๋ฌธ์ž ์ •๋ณด๋ž€ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„ํ•œ ๊ฐ’์„ ๋งํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Objectํด๋ž˜์Šค์˜ toStrin..

KITRI/JAVA 2020. 5. 12. 14:40
Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ฐ์ฒดํƒ€์ž…ํ™•์ธ(instanceof), ์‹ฑ๊ธ€ํ†ค ํ•จ์ˆ˜(Singleton)

๊ฐ์ฒด ํƒ€์ž… ํ™•์ธ(instanceof) ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์€ ์ž์‹ ํƒ€์ž…์ด ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ€๋ชจ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๊ฐ€ ๋ถ€๋ชจ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๊ฒฝ์šฐ ์ž์‹ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค. Parent parent = new Parent(); Child child = (Child) Parent; //๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์—†๋‹ค. Parent parent = new Child(); //upCasting Child child = (Child) Parent; //๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. downCasting ๊ทธ๋ ‡๋‹ค๋ฉด ๋ถ€๋ชจ ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋ถ€๋ชจ ๊ฐ์ฒด์ธ์ง€ ์ž์‹ ๊ฐ์ฒด์ธ์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ• ๊นŒ? ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด instanceof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜..

KITRI/JAVA 2020. 5. 11. 14:57
Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ํด๋ž˜์Šค์˜ ๊ด€๊ณ„(Dependency, Association)

ํด๋ž˜์Šค๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉ -> ์˜์กด๊ด€๊ณ„ ๊ฐ์ฒด๋ฅผ ๋ฉค๋ฒ„๊ฐ์ฒด(ํ•„๋“œ)๋กœ ์‚ฌ์šฉ => ์—ฐ๊ด€๊ด€๊ณ„ ๊ด€๊ณ„(Relationship) 1. ์ •์˜ - ๊ตฌ์„ฑ์š”์†Œ๋“ค๊ฐ„์˜ ์˜๋ฏธ ์žˆ๋Š” ์—ฐ๊ด€์„ฑ์„ ํ‘œํ˜„ - ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค๋“ค๊ฐ„์˜ ๊ด€๊ณ„ ํ‘œํ˜„ ์‹œ ์‚ฌ์šฉ๋œ๋‹ค. 2. ์ข…๋ฅ˜ ์ผ๋ฐ˜ํ™”๊ด€๊ณ„(Generalization Relationship) ์‹ค์ฒดํ™”, ์‹คํ˜„ํ™” ๊ด€๊ณ„(Realization Relationship) ์˜์กด๊ด€๊ณ„(Dependency Relationship) ์—ฐ๊ด€๊ด€๊ณ„(Association Relationship) ์ง‘ํ•ฉ์—ฐ๊ด€(Aggregation Relationship) ๋ณตํ•ฉ์—ฐ๊ด€(Composition Relationship) -> ์ง‘ํ•ฉ์—ฐ๊ด€๊ด€๊ณ„์™€ ๋ณตํ•ฉ์—ฐ๊ด€๊ด€๊ณ„๋Š” ์„ค๊ณ„์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. Dependency(์˜์กด๊ด€๊ณ„) ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๊ฐ™๋‹ค. ํด๋ž˜์Šค ์•ˆ์— ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€..

KITRI/JAVA 2020. 5. 11. 14:32
Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์ธํ„ฐํŽ˜์ด์Šค(interface), ์ ‘๊ทผ์ œํ•œ์ž(public, private, protected, default)

์ธํ„ฐํŽ˜์ด์Šค(interface) : ์ธํ„ฐํŽ˜์ด์Šค๋ž€? ์ผ์ข…์˜ ์ถ”์ƒํด๋ž˜์Šค์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”์ƒํด๋ž˜์Šค์ฒ˜๋Ÿผ ์ถ”์ƒ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–์ง€๋งŒ ์ถ”์ƒํด๋ž˜์Šค๋ณด๋‹ค ์ถ”์ƒํ™” ์ •๋„๊ฐ€ ๋†’์•„์„œ ์ถ”์ƒํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ๋ชธํ†ต์„ ๊ฐ–์ถ˜ ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ ๋˜๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑ์›์œผ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. ์˜ค์ง ์ถ”์ƒ๋ฉ”์„œ๋“œ์™€ ์ƒ์ˆ˜๋งŒ์„ ๋ฉค๋ฒ„๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ ์™ธ์˜ ๋‹ค๋ฅธ ์–ด๋– ํ•œ ์š”์†Œ๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์™„์„ฑ๋œ '๋ฏธ์™„์„ฑ ์„ค๊ณ„๋„' ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„๋œ ๊ฒƒ์€ ์•„๋ฌด ๊ฒƒ๋„ ์—†๊ณ  ๋ฐ‘๊ทธ๋ฆผ๋งŒ ๊ทธ๋ ค์ ธ ์žˆ๋Š” '๊ธฐ๋ณธ ์„ค๊ณ„๋„' ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ž๋ฐ”์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ํƒ€์ž…์ด๋‹ค. - ๊ฐ์ฒด์˜ ๊ตํ™˜์„ฑ์„ ๋†’์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. - (ํด๋ž˜์Šค๋Š” ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌ์„ฑ ๋ฉค๋ฒ„๋กœ ๊ฐ€์ง€๋Š”๋ฐ) ์ธํ„ฐํŽ˜์ด์Šค๋Š”..

KITRI/JAVA 2020. 5. 8. 13:43
Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์ถ”์ƒํด๋ž˜์Šค(abstract)

abstract ์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ณณ - ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒด ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ด ํด๋ž˜์Šค๋“ค์˜ ๊ณตํ†ต์ ์ธ ํŠน์„ฑ์„ ์ถ”์ถœํ•ด์„œ ์„ ์–ธํ•œ ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค. ์ถ”์ƒํด๋ž˜์Šค์™€ ์‹ค์ฒด ํด๋ž˜์Šค๋Š” ์ƒ์†์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ถ”์ƒํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ์ด๊ณ  ์‹ค์ฒด ํด๋ž˜์Šค๊ฐ€ ์ž์‹์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์‹ค์ฒด ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ํŠน์„ฑ์„ ๋ฌผ๋ ค๋ฐ›๊ณ , ์ถ”๊ฐ€์ ์ธ ํŠน์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํŠน์„ฑ์ด๋ž€ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งํ•œ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ ? 1) ์‹ค์ฒด ํด๋ž˜์Šค๋“ค์˜ ๊ณตํ†ต๋œ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์„ ํ†ต์ผํ•  ๋ชฉ์  2) ์‹ค์ฒด ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝ ๋ถ€๋ชจํด๋ž˜์Šค์—์„œ ์ •์˜๋งŒ ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž์‹ํด๋ž˜์Šค์—์„œ ํ•จ์ˆ˜์žฌ์ •์˜ ํ•ด์ค€๋‹ค.(๋ฐ˜๊ฐ•์ œ) ์ถ”์ƒํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋ผ๋„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์ถ”์ƒํด๋ž˜์Šค๋กœ ํ‘œ์‹œํ•ด์•ผํ•œ..

KITRI/JAVA 2020. 5. 8. 10:56
Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์ƒ์†(inheritance) / ๋ฉ”์†Œ๋“œ ์žฌ์ •์˜(์˜ค๋ฒ„๋ผ์ด๋”ฉ Overriding)

ํด๋ž˜์Šค์˜ ํŠน์ง• 3๊ฐ€์ง€ โ‘  ์€๋‹‰ํ™” -> public ๋ณด๋‹ค private๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. โ‘ก ์ค‘๋ณต์„ฑ -> ์ค‘๋ณต (ํ•จ์ˆ˜์ค‘๋ณต/์ƒ์„ฑ์ž์ค‘๋ณต) โ‘ข ์ƒ์†์„ฑ -> ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฅผ ์ž์‹์—๊ฒŒ ๋ฌผ๋ ค์ค€๋‹ค. ์ž๋ฐ”์—์„œ ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. ์ž๋ฐ”๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ€๋ชจํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ extends ๋’ค์—๋Š” ํ•˜๋‚˜์˜ ๋ถ€๋ชจํด๋ž˜์Šค๋งŒ ์™€์•ผํ•œ๋‹ค. ์ƒ์† : ์ƒ์†์ด๋ž€? ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ƒ์†์„ ํ†ตํ•ด์„œ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ ์€ ์–‘์˜ ์ฝ”๋“œ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ์ฝ”๋“œ๋ฅผ ๊ณตํ†ต์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์€ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์œ ์ง€๋ณด..

KITRI/JAVA 2020. 5. 7. 10:05