๋ฐ˜์‘ํ˜•
JuneBee
JuneBee
JuneBee
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (102)
    • ๐Ÿ‘” JOB (10)
      • ์ „ํ˜• ํ›„๊ธฐ (10)
    • ๐ŸŽฎ GAME (9)
      • ์ ค๋‹ค | ์™•๊ตญ์˜ ๋ˆˆ๋ฌผ ๊ฒŒ์ž„ ์ผ๊ธฐ (9)
    • ๐Ÿ““ STUDY (60)
      • JAVA (15)
      • TIL (2)
      • FASTCAMPUS (32)
      • ํ™˜๊ฒฝ์„ค์ • (2)
      • YOCTO (1)
      • OS (4)
      • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์ธ ์•ก์…˜ (2)
    • ๐ŸŽงDAILY (6)
    • ๐Ÿ‡ฉ๐Ÿ‡ช GERMAN (17)
      • ๋Œ€ํ•™์› ์ง€์› (3)
      • ์ง€์› ํ›„๊ธฐ (11)
      • ๋…์ผ์–ด ์‹œํ—˜ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ์ผ์ƒ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ง์žฅ์ธ์ธ๊ฐ•
  • ํ”Œ๋ ˆ์ด์ผ๊ธฐ
  • ๋…์ผ์œ ํ•™
  • ๋…์ผ์–ด
  • ํŒจ์ŠคํŠธ์บ ํผ์Šค
  • SSAFY
  • ๊ฒŒ์ž„์ผ๊ธฐ
  • ์ •๋ ฌ
  • ํŒจ์บ ์ฑŒ๋ฆฐ์ง€
  • ์œ ํ•™
  • ์‹ธํ”ผ
  • ์ทจ์—…์ค€๋น„
  • bruteforce
  • Java
  • ์ž๋ฃŒ๊ตฌ์กฐ
  • ํ•œ๋ฒˆ์—๋๋‚ด๋Š”์ฝ”๋”ฉํ…Œ์ŠคํŠธ369JavaํŽธ์ดˆ๊ฒฉ์ฐจํŒจํ‚ค์ง€Online.
  • ์„์‚ฌ
  • ์ง์žฅ์ธ์ž๊ธฐ๊ณ„๋ฐœ
  • telc
  • ํŒจ์ŠคํŠธ์บ ํผ์Šคํ›„๊ธฐ
  • C/C++
  • ๋ฐฑํŠธ๋ž˜ํ‚น
  • ๋ชจํ—˜์ผ๊ธฐ
  • sort
  • ์™•๊ตญ์˜๋ˆˆ๋ฌผ
  • ์™•๋ˆˆ
  • ์ ค๋‹ค
  • ๋…์ผ
  • ํฌ๋ฃจ์Šค์นผ
  • B1

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
JuneBee

JuneBee

๐Ÿ““ STUDY/JAVA

๋‹คํ˜•์„ฑ

2022. 5. 17. 23:22
728x90
๋ฐ˜์‘ํ˜•

Polymorphism

<1> ์ •์˜

๋‹คํ˜•์„ฑ์ด๋ž€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋งŽ์€ ํ˜•(ํƒ€์ž…)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ์ด๋‹ค. ๋‹คํ˜•์„ฑ์€, ์ƒ์†๊ด€๊ณ„์— ์žˆ์„ ๋•Œ ์กฐ์ƒํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ๋ ˆํผ๋Ÿฐ์Šค ํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) ํŒฅ๋ถ•์–ด๋นต is a ๋ถ•์–ด๋นต | ์Šˆํฌ๋ฆผ๋ถ•์–ด๋นต is a ๋ถ•์–ด๋นต | ํ”ผ์ž ๋ถ•์–ด๋นต is a ๋ถ•์–ด๋นต

<2> ํ™œ์šฉ

  1. ๋‹คํ˜•์„ฑ์œผ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด๋กœ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค
    public ArrayList(int initialCapacity){
    	if(initialCapcity>0){this.elementData = new Object [initialCapacity];}
    	else if (initialCapacity ==0 ){this.elementData = EMPTY_ELEMENTDATA;}
    	else{throw new IllegalArgumentException ("Illegal Capcity: " + initialCapacity);}}
    
  2. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ, ์˜ค๋ธŒ์ ํŠธ ํด๋ž˜์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋ธŒ์ ํŠธ ํด๋ž˜์Šค๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์กฐ์ƒ์ธ๋ฐ, ์˜ค๋ธŒ์ ํŠธ์˜ ๋ฐฐ์—ด์€ ์–ด๋–ค ํƒ€์ž…์˜ ๊ฐ์ฒด๋ผ๋„ ๋‹ค ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋‹คํ˜•์„ฑ
    public void println (Object x){ //Object ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์žˆ์–ด์„œ ์ถœ๋ ฅ์ด ๋˜๊ณ ์žˆ๋˜๊ฑฐ์ž„
    	String s = String.valueOf(x);
    	synchronized(this){print(s); newLine();}}
    
  4. ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋งž์•„์•ผ ํ•˜๋Š”๋ฐ, println ์—๋Š” ๋ฌด์—‡์„ ๋„ฃ์–ด๋„ ์ถœ๋ ฅ์ด ๋œ๋‹ค → ์™œ๊ทธ๋Ÿด๊นŒ? ์•„๋ž˜๋Š” println์˜ ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค

๋‹คํ˜•์„ฑ๊ณผ ์ฐธ์กฐํ˜• ๊ฐ์ฒด์˜ ํ˜•๋ณ€ํ™˜

๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋”๋ผ๋„ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด ์ œํ•œ๋œ๋‹ค

Method Area: ํด๋ž˜์Šค ๋กœ๋”ฉ ์‹œ ์ƒ์„ฑ - ํด๋ž˜์Šค ์ž์ฒด ์ •๋ณด๋งŒ ์˜ฌ๋ผ๊ฐ„๋‹ค JVM Stacks : static ๋ณ€์ˆ˜/ ๋ฉ”์„œ๋“œ๊ฐ€ ์Œ“์ธ๋‹ค Heap : non-static ๋ณ€์ˆ˜/ ๋ฉ”์„œ๋“œ๊ฐ€ ์Œ“์ธ๋‹ค. new keyword ๊ฐ€ ์“ฐ์ธ ์• ๋“ค์ด ์—ฌ๊ธฐ๋กœ ์˜จ๋‹ค → ๋…๋ฆฝ์ 

 

https://junebee.tistory.com/6 ์ฐธ๊ณ 

 

Variables

1. ์ƒ์ˆ˜ (1) ์ •์˜ ์ƒ์ˆ˜๋Š” ํ•œ๋ฒˆ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค format: final datatype VARNAME; public static void main(String[] args){ //๋ณ€์ˆ˜ int age = 30; String name = June; /*age = 20; ๋กœ ์ˆ˜์ • ๊ฐ€..

junebee.tistory.com

  1. ์ฐธ์กฐํ˜• ๊ฐ์ฒด์˜ ํ˜• ๋ณ€ํ™˜ 
    1. ๋ฌต์‹œ์  ์บ์ŠคํŒ… : child → super
      ์ž์† ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์กฐ์ƒ ํƒ€์ž…์œผ๋กœ ์ฐธ์กฐํ•  ๋•Œ์—๋Š” ํ˜•๋ณ€ํ™˜ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค
      ๐Ÿงธ์กฐ์ƒ์˜ ๋ชจ๋“  ๋‚ด์šฉ์ด ์ž์‹์—๊ฒŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฑ์ •ํ•  ํ•„์š” ์—†๋‹ค
    2. ๋ช…์‹œ์  ์บ์ŠคํŒ… : super → child
      ์กฐ์ƒ ํƒ€์ž…์„ ์ž์†ํƒ€์ž…์œผ๋กœ ์ฐธ์กฐํ•  ๋•Œ์—๋Š” ํ˜•๋ณ€ํ™˜ ์ƒ๋žต์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค ์กฐ์ƒ์„ ๋ฌด์ž‘์ • ์ž์†์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์œผ๋‹ˆ ์ฃผ์˜ํ•˜์ž → instanceof ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ํŠน์ • ํด๋ž˜์Šค ํƒ€์ž…์ธ์ง€ boolean์œผ๋กœ ๋ฆฌํ„ดํ•œ ํ›„ true ์ผ๋•Œ์—๋งŒ ์บ์ŠคํŒ…ํ•  ๊ฒƒ

      ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” super → child ๋กœ์˜ ํ˜•๋ณ€ํ™˜ํ•œ ์ฝ”๋“œ์ด๋‹ค. ๋ช…์‹œ์  ์บ์ŠคํŒ… ์‹œ, instanceof ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ๋กœ ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์„ ํ•˜์ง€ ์•Š๋А๋‹ค๋ฉด, ์ž๋ฐ”๋Š” ์•Œ๋ ค์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹ ์ค‘ํ•˜๊ฒŒ ์จ์•ผํ•œ๋‹ค.
Pokemon pikachu = new Pokemon ();
if (pikachu instanceof FairyType) { FairyType ft = (FairyType) pikachu; }
//์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ instance of ๋ฅผ ์“ฐ์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์—๋Š”,

Pokemon phantom = new Pokemon ();
FairyType ft2 = (FairyType) phantom;
phantom.angelicKiss(); 
//compile error ๋ฐœ์ƒ์ด ์•ˆ๋จ. ์ž์นซํ•˜๋ฉด ์˜ค์˜ท ๋˜๋„ค ํ•˜๋‹ค๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ๋ถ€์‹ค์ˆ˜๋„ ์žˆ๋‹ค..

2. ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ๋ ˆ๋ฒจ์— ๋”ฐ๋ฅธ ๊ฐ์ฒด์˜ ๋งด๋ฒ„ ์—ฐ๊ฒฐ

   1. ์ƒ์† ๊ด€๊ณ„์—์„œ ๊ฐ์ฒด์˜ ๋งด๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์ค‘๋ณต๋  ๋•Œ, ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ์ด ๋‹ฌ๋ผ์ง
  (2) ์ƒ์†๊ด€๊ณ„์—์„œ ๋ฉ”์„œ๋“œ๊ฐ€ ์ค‘๋ณต๋  ๋•Œ (Method Overriding) : ๋ฌด์กฐ๊ฑด ์ž์‹ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉฐ, ์ตœ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋œ ์‹ค์ฒด ๊ฐ์ฒด์— ์ตœ์ ํ™” ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ๋™์ž‘ํ•œ๋‹ค (์ฆ‰, overriding ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ)

์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” ๋‘˜๋‹ค ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋Š” println ์˜ toString() override ๋•Œ๋ฌธ์ด๋‹ค

System.out.println(Phantom.toString());
System.out.println(Phantom);

<3> Generics

Generics๋Š” ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฉ”์„œ๋“œ, ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์—์„œ ์ปดํŒŒ์ผ ์‹œ์— ํƒ€์ž…์„ ์ฒดํฌํ•œ๋‹ค ์ฆ‰, ๋ฏธ๋ฆฌ ํ˜•๋ณ€ํ™˜์„ ํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ‘œํ˜„

  1. ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ ์‹œ <> ์— ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ‘œ์‹œ
className : Raw Type
className<T> : Generic Type
public class ClassName<T> {}
public interface InterfaceName<T> {}

   2. ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ ์ž„์˜์˜ ์ฐธ์กฐํ˜• ํƒ€์ž…์„ ๋œปํ•จ

 ๐Ÿคฆ๐Ÿป‍โ™€๏ธ T : reference Type
      E : Element
      K : Key
      V : Value
public class ArrayList<E> extends AbstractList<E> implements List<E>, RnadomAccess, Cloneable {...}
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Serializable{...}

   3. ๊ฐ์ฒด ์ƒ์„ฑ ๋ณ€์ˆ˜์ชฝ๊ณผ ์ƒ์„ฑ ์ชฝ์˜ ํƒ€์ž…์€ ๋ฐ˜๋“œ์‹œ ๊ฐ™์•„์•ผ ํ•œ๋‹ค

ClassName <String> generic1 = new ClassName<String>();
List<Integer> generic2 = new ArrayList<Integer>();
List<String> generic3 = new ArrayList<Character>(); //ํ‹€๋ฆผ

์˜ˆ์‹œ

public class GenericClass<T> {
private T something;
public T getSomething(){return something;}
public void setSome(T something){this.something = something;}}
public class Test{
private static void genericTest(){
//< > ์•ˆ์— ์›ํ•˜๋Š” ํƒ€์ž…์„ ๋„ฃ๊ธฐ
GenericClass <String> gStr = new GnericClass<>(); //String ์ด๋ผ๊ณ  ์ •์˜ํ•˜๋ฉด..?
GenericClass <Integer> gInt = new GenericClass<> (); //Integer๋„ ๊ฐ€๋Šฅ,,?!
//์›ํ•˜๋Š” ํƒ€์ž… ์ง‘์–ด ๋„ฃ๊ธฐ
gStr.setsomething("String something์ด๋ผ๊ณ  ์ •ํ•ด์ ธ์„œ ๋‚˜์™€..!");}
gInt.setsomething("Integer something ์ด๋ผ๊ณ  suggest ๋˜!");
//์›ํ•˜๋Š” ํƒ€์ž… ๋„์ง‘์–ด ๋‚ด๊ธฐ
String gStr2 = gStr.getSomething();
System.out.println(gStr2); //์˜ค ๋บ„๋•Œ๋„ string ๋งŒ ๊ฐ€๋Šฅํ•ด์กŒ์–ด !
}
} //์ปดํŒŒ์ผ ํƒ€์ž…์— ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์ด ๋Œ€์ž…๋œ ํƒ€์ž…์œผ๋กœ ๋Œ€์ฒด๋จ!

์‚ฌ์šฉ

  1. Type Parameter ์˜ ์ œํ•œ ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์ฒด์ ์ธ ํƒ€์ž… ์ œํ•œ์ด ํ•„์š”ํ•˜๋‹ค.
    ex: ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„ ์‹œ Number ์ดํ•˜์˜ ํƒ€์ž… (byte, short, interger..) ๋กœ๋งŒ ์ œํ•œํ•ด์•ผ ํ•œ๋‹ค
    type parameter ์„ ์–ธ ๋’ค extends ์™€ ํ•จ๊ป˜ ์ƒ์œ„ ํƒ€์ž…์„ ๋ช…์‹œํ•˜์—ฌ ์ œํ•œํ•œ๋‹ค.
class Number< T extends Number>{} //T๋Š” Number ๋ฅผ ์ƒ์† ๋ฐ›์•„์•ผ ํ•œ๋‹ค

   2. ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œํ•œํ•  ๊ฒฝ์šฐ๋„ extends ์‚ฌ์šฉ

   3. ํด๋ž˜์Šค์™€ ํ•จ๊ป˜ ์ธํ„ฐํŽ˜์ด์Šค ์ œ์•ฝ ์กฐ๊ฑด์„ ์ด์šฉํ•  ๊ฒฝ์šฐ & ๋กœ ์—ฐ๊ฒฐ

class TypeRestrcit1 <T extends Cloneable> ();
class TypeRestrict2 <T extends Number & Cloneable & Comparable<String>>{}
728x90
๋ฐ˜์‘ํ˜•

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

QUEUE  (0) 2022.05.18
์บก์Аํ™”  (0) 2022.05.17
์ƒ์†  (0) 2022.05.17
์ถ”์ƒํ™”  (0) 2022.05.17
๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ  (1) 2022.05.17
    '๐Ÿ““ STUDY/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • QUEUE
    • ์บก์Аํ™”
    • ์ƒ์†
    • ์ถ”์ƒํ™”
    JuneBee
    JuneBee
    โ‚Šหš.๐ŸŽง๐Ÿ““ ๊ธฐ๋ก์šฉ ๋ธ”๋กœ๊ทธ ๐“‚ƒ๐Ÿ–Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”