Skip to content

Latest commit

ย 

History

History
569 lines (407 loc) ยท 14.8 KB

File metadata and controls

569 lines (407 loc) ยท 14.8 KB
icon java

์ž๋ฐ” ๋ฌธ๋ฒ• ํ•œ๋ˆˆ์— ์ •๋ฆฌ 2ํŽธ

๋ฉ”์„œ๋“œ(static)


์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ

public class Main {
    public static void main(String[] args) {
        add(50,10);
        System.out.println(minus(40,10)); //return์„ ์‚ฌ์šฉ์‹œ ๋ฐ”๊นฅ์—์„œ๋„ ์ถœ๋ ฅ๊ฐ€๋Šฅ
    }

    public static void add(int x, int y){ //(ํŒŒ๋ผ๋ฏธํ„ฐ) void๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฑด return ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ
        System.out.println(x+y);
    }

    public static int minus(int x, int y){
        return x-y;
    }
}

๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋“œ


public class Main {
    public static void main(String[] args) {
        System.out.println(add(50,10));
        System.out.println(add(40,10,12));

        System.out.println(add(10,12,13,14));
    }

    public static int add(int x, int y){ //๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ๊ฐ™๋‹ค๋ฉด ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•จ
        return x+y;
    }

    public static int add(int x, int y,int z){
        return x+y+z;
    }

    public static int add(int... numbers){ //...์€ 0๊ฐœ์ด์ƒ์˜ ์ˆซ์ž
        int sum = 0;
        for(int i =0; i < numbers.length; i++){
            sum = sum + i;
        }
        return sum;
    }
}

static


static ๋ฉ”๋ชจ๋ฆฌ์— ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์‹œ ์ฒ˜์Œ ๋กœ๋“œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„์ด๋ผ ๋ณ„๋„์˜ ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— public static void main(String[] args)๋Š” ์ƒ์œ„์ธ public class Main๊ณผ๋Š” ์ƒ๊ด€์ด ์—†์Œ

ํด๋ž˜์Šค์™€ getter, setter์™€ ์ƒ์„ฑ์ž


ํด๋ž˜์Šค : ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์œผ๋กœ ๋‚˜๋ˆ ์ง

getter ์™€ setter : ๊ตณ์ด private์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  get/set์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ง€ํ‚ค๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋งŒ์•ฝ ์Œ์‹์˜ ๊ฐ€๊ฒฉ, ๊ฐฏ์ˆ˜๊ฐ€ ์Œ์ˆ˜๊ฐ€ ์˜จ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ ํ˜•์‹์— ๋งž์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— getset ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋ฌด๊ฒฐ์„ฑ์„ ์ง€์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

private String name;
    private int age;

//private์„ ํ•˜๋Š” ๋Œ€์‹  getter์™€ setter์„ ํ•ด์คŒ
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

์ƒ์„ฑ์ž


์ƒ์„ฑ์ž์˜ ๊ทœ์น™

  1. ํด๋ž˜์Šค๋ช…๊ณผ ๋ฉ”์†Œ๋“œ๋ช…์ด ๋™์ผํ•˜๋‹ค.
  2. ๋ฆฌํ„ดํƒ€์ž…์„ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. (void๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.)
Person(String name, int age){ //ํ•„๋“œ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋งŒ๋“œ๋Š” ์˜ค๋ฒ„๋กœ๋“œ ๋œ ์ƒ์„ฑ์ž
        this.name = name; //์ดˆ๊ธฐํ™” this๋Š” ์™ธ๋ถ€๋ผ๋Š” ๋ณ€์ˆ˜์—์„œ ๋„˜์–ด์˜จ ๊ฐ’, ๋‚ด๊ฐ€ ๊ฐ€์ง„ name์ด๋ƒ? ์•„๋‹ˆ๋ƒ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด
        this.age = age;
    }

to String


์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค๋ฉด ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ์–ธ์–ด๋กœ ์ถœ๋ ฅ๋ผ์„œ ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค ํ•ด์„œ toString์„ ํ•ด์ฃผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์–ธ์–ด๋กœ ์ถœ๋ ฅ๋จ

@Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\\'' +
                ", age=" + age +
                '}';
    } //์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค๋ฅผ ํ†ตํ•ด toString์„ ํด๋ฆญํ•˜์—ฌ ๋งŒ๋“ค์–ด์คŒ

์ „

ํ›„

ํด๋ž˜์Šค์™€ getter/setter์™€ ์ƒ์„ฑ์ž, toString, ๋ชจ๋ธ ํด๋ž˜์Šค ์ „์ฒด์ฝ”๋“œ


public class Main {
    public static void main(String[] args) {
        System.out.println(add(50,10));
        System.out.println(add(40,10,12));

        System.out.println(add(10,12,13,14));

        Person person = new Person();
        Person person2 = new Person("ํ™๊ธธ๋™", 10);

        System.out.println(person);
        System.out.println(person2);
    }

    public static int add(int x, int y){ //๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ๊ฐ™๋‹ค๋ฉด ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•จ
        return x+y;
    }

    public static int add(int x, int y,int z){
        return x+y+z;
    }

    public static int add(int... numbers){ //...์€ 0๊ฐœ์ด์ƒ์˜ ์ˆซ์ž
        int sum = 0;
        for(int i =0; i < numbers.length; i++){
            sum = sum + i;
        }
        return sum;
    }
}

class Person{ //์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์œผ๋กœ ๋‚˜๋ˆ ์ง
    private String name;
    private int age;

    Person(){ //ํด๋ž˜์Šค์™€ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ธฐ๋ณธ์ƒ์„ฑ์ž

    }

    Person(String name, int age){ //ํ•„๋“œ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋งŒ๋“œ๋Š” ์˜ค๋ฒ„๋กœ๋“œ ๋œ ์ƒ์„ฑ์ž
        this.name = name; //์ดˆ๊ธฐํ™” this๋Š” ์™ธ๋ถ€๋ผ๋Š” ๋ณ€์ˆ˜์—์„œ ๋„˜์–ด์˜จ ๊ฐ’, ๋‚ด๊ฐ€ ๊ฐ€์ง„ name์ด๋ƒ? ์•„๋‹ˆ๋ƒ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด
        this.age = age;
    }

    //private์„ ํ•˜๋Š” ๋Œ€์‹  getter์™€ setter์„ ํ•ด์คŒ
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\\'' +
                ", age=" + age +
                '}';
    } //์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค๋ฅผ ํ†ตํ•ด toString์„ ํด๋ฆญํ•˜์—ฌ ๋งŒ๋“ค์–ด์คŒ
}

ํŒจํ‚ค์ง€์™€ import


model ํŒจํ‚ค์ง€์— Person.class๋ฅผ ๋„ฃ์–ด์คŒ

package model;

public class Person{ //์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์œผ๋กœ ๋‚˜๋ˆ ์ง
    private String name;
    private int age;

    public Person(){ //public์„ ๊ผญ ์จ์ค˜์•ผ ํ•จ ์•ˆ๊ทธ๋Ÿฌ๋ฉด main์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€

    }

    public Person(String name, int age){ 
        this.name = name; 
        this.age = age;
    }

    //private์„ ํ•˜๋Š” ๋Œ€์‹  getter์™€ setter์„ ํ•ด์คŒ
    public String getName() { //get์€ ๊ฐ’์„ ๊บผ๋‚ด๋Š” ๊ฒƒ
        return name;
    }

    public void setName(String name) { //set์€ ๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\\'' +
                ", age=" + age +
                '}';
    }
}

com.company ํŒจํ‚ค์ง€ ์•ˆ์— Main ์ž๋ฐ”

package com.company;

import model.Person;

public class Main {
    public static void main(String[] args) {

        Person person = new Person();
        Person person2 = new Person("ํ™๊ธธ๋™", 10);

        System.out.println(person);
        System.out.println(person2);
    }
}

์ƒ์†


์ž์‹(ํด๋ž˜์Šค)์ด ์ƒ์†๋ฐ›๊ณ  ์‹ถ์€ ๋ถ€๋ชจ(ํด๋ž˜์Šค)๋ฅผ ์„ ํƒํ•ด์„œ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค. ์ด๋•Œ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ์ž์‹ ํด๋ž˜์Šค, ํ•˜์œ„ ํด๋ž˜์Šค ๋˜๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ƒ์†์„ ํ•ด์ฃผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค, ์ƒ์œ„ ํด๋ž˜์Šค ๋˜๋Š” ์Šˆํผ ํด๋ž˜์Šค

  1. ์ƒ์† ๋ฐฉ๋ฒ• : class ํด๋ž˜์Šค(์ž์‹) extends ํด๋ž˜์Šค(๋ถ€๋ชจ)
  2. ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋ฉ”์†Œ๋“œ์™€ ํ•„๋“œ๋ฅผ ๋ฌผ๋ ค๋ฐ›์•„ ์‚ฌ์šฉ, ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ๋ฉ”์†Œ๋“œ๋‚˜ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค
  3. ์ž์‹ ํด๋ž˜์Šค๋Š” ์—ฌ๋Ÿฌ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์ง€ ๋ชปํ•œ๋‹ค. ์ฆ‰, ๋‹จ์ผ์ƒ์†๋งŒ ๊ฐ€๋Šฅ
  4. ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ์—ฌ๋Ÿฌ ์ž์‹ ํด๋ž˜์Šค์—๊ฒŒ ์ƒ์†์ด ๊ฐ€๋Šฅ
  5. ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ž์‹ ํด๋ž˜์Šค๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ 
hero.isFlying(); 
//get์˜ ์†์„ฑ๋„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  boolean์˜ ๊ฒฝ์šฐ is๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ getter์„ ๊ฐ€์ง

โ‡’ ์ด์˜ ๊ฒฝ์šฐ ์–ด๋””์„œ ์•Œ ์ˆ˜ ์žˆ๋А๋ƒ? Hero์˜ getter๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์Œ

๐Ÿ’ก set = ์„ค์ •, get = ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ,

  • ๋ผ์ง€์ €๊ธˆํ†ต์„ ๋งŒ๋“ ๋‹ค > ๋ณ€์ˆ˜ ์„ ์–ธ
  • ๊ทธ ์•ˆ์— ๋ˆ์„ ์ €์ถ•ํ•œ๋‹ค > set
  • ๊ทธ ์•ˆ์— ๋ˆ์ด ์–ผ๋งˆ๋‚˜ ๋“ค์–ด ์žˆ๋Š”์ง€ ๋ณธ๋‹ค > get
  • ์‚ฌ์šฉ ์ด์œ  : SET, GET ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ณ€์ˆ˜๊ฐ’์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋‹ค. ์ง์ ‘ ์ ‘๊ทผํ•˜๊ฐœ ๋˜๋ฉด ๊ฐ’์ด ๋ณ€ํ•˜๊ฒŒ ๋˜๊ณ  ๊ทธ๋Ÿฌ๋ฉด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•จ

์ถ”์ƒํด๋ž˜์Šค


์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋ฌธ๋ฒ•๋ณด๋‹ค๋Š” ๋ฌด์—‡์ด๊ณ  ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ณธ์งˆ์ ์ธ ๊ฐœ๋…์„ ์•Œ์•„์•ผ ํ•จ

๐Ÿ€์ถ”์ƒํด๋ž˜์Šค๋ž€?

์ถ”์ƒํด๋ž˜์Šค๋Š” Aํด๋ž˜์Šค, Bํด๋ž˜์Šค, Cํด๋ž˜์Šค๋“ค ๊ฐ„์— ๋น„์Šทํ•œ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณตํ†ต์ ์œผ๋กœ ์ถ”์ถœํ•ด ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค๋‹ค.

์‹ค์ฒดํด๋ž˜์Šค๋Š” ์‹ค์ฒด๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋Š” ํด๋ž˜์Šค๋กœ Aํด๋ž˜์Šค, Bํด๋ž˜์Šค, Cํด๋ž˜์Šค์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด๋‹ค.

์ถ”์ƒํด๋ž˜์Šค๋Š” ์‹ค์ฒด ํด๋ž˜์Šค์˜ ๊ณตํ†ต์ ์ธ ๋ถ€๋ถ„์„ ์ถ”์ถœํ•ด ์–ด๋А์ •๋„ ๊ทœ๊ฒฉ์„ ์žก์•„๋†“์€ ์ถ”์ƒ์ ์ธ ํด๋ž˜์Šค, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ฒดํด๋ž˜์Šค์™€๋Š” ์ƒ์†๊ด€๊ณ„

So, ์‹ค์ฒดํด๋ž˜์Šค๋Š” ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ •๋„์˜ ๊ตฌ์ฒด์„ฑ์„ ๊ฐ€์ง„๋‹ค. ํ•˜์ง€๋งŒ ์ถ”์ƒํด๋ž˜์Šค๋Š” ์•„์ง ๋ฉ”์„œ๋“œ์™€ ๋‚ด์šฉ์ด ์ถ”์ƒ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ๋ถˆ๊ฐ€

Charter charter = new Charter(); // Charter๊ฐ€ ์ถ”์ƒํด๋ž˜์Šค์ธ ๊ฒฝ์šฐ ์•ˆ๋จ!!!
  • ์ถ”์ƒํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค ์•ž์— abstract๋ฅผ ๋ถ™์—ฌ์ฃผ๊ณ  ์ถ”์ƒ ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค!
  • {}์—†์ด ๋‚ด์šฉ์ด ์—†๊ธฐ ๋–„๋ฌธ์— ์ถ”์ƒ ๋ฉ”์„œ๋“œ
public abstract class Character {
    //Magician ๋˜ํ•œ ์‹ธ์›€์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์‹ถ๋‹ค๋Š” ์ „์ œ์— ์บ๋ฆญํ„ฐ์— ์‹ธ์›€์˜ ๊ธฐ๋Šฅ์„ ๊ฐ•์ œํ™”
    public abstract void attack(Hero hero);//{}์—†์ด ๋‚ด์šฉ์ด ์—†๊ธฐ ๋–„๋ฌธ์— ์ถ”์ƒ ๋ฉ”์„œ๋“œ
}

์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ์ž์‹ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ extends๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ถ”์ƒํด๋ž˜์Šค ์ƒ์†

public class Magician extends Character {

    @Override
    public void attack(Hero hero) {
     //์•ˆ์— ๋‚ด์šฉ์„ ์ ์–ด์ค˜์•ผ ํ•จ
    }
}

interface


์ถ”์ƒํด๋ž˜์Šค์™€ ๊ฐ™์€ ์—ญํ• 

ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง, ๋‹ค์ค‘์ƒ์† ๊ฐ€๋Šฅ, ๋‹คํ˜•์„ฑ

์•„๋ž˜ ๋‘๊ฐœ๋Š” ๊ฐ™์€ ์˜๋ฏธ

public abstract class Character {
    //Magician ๋˜ํ•œ ์‹ธ์›€์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์‹ถ๋‹ค๋Š” ์ „์ œ์— ์บ๋ฆญํ„ฐ์— ์‹ธ์›€์˜ ๊ธฐ๋Šฅ์„ ๊ฐ•์ œํ™”
    public abstract void attack(Hero hero);//{}์—†์ด ๋‚ด์šฉ์ด ์—†๊ธฐ ๋–„๋ฌธ์— ์ถ”์ƒ ๋ฉ”์„œ๋“œ
}
interface Character{ //์ถ”์‚ดํด๋ž˜์Šค์™€ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ
    void attack(Hero hero);
}

but ์ถ”์ƒํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค ์ฐธ์กฐ์‹œ

์ถ”์ƒํด๋ž˜์Šค : extends ์‚ฌ์šฉ

public class Magician extends Character {

    @Override
    public void attack(Hero hero) {

    }
}

์ธํ„ฐํŽ˜์ด์Šค : implements ์‚ฌ์šฉ

public class Magician implements Character {

    @Override
    public void attack(Hero hero) {

    }
}

์žฅ์ 

ArrayList ์‚ฌ์šฉ์‹œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํƒ€์ž… ์‚ฌ์šฉ๊ฐ€๋Šฅ

ArrayList<Character> characterArrayList = new ArrayList<>(); //<>์•ˆ์— Charcter ๋Œ€์‹  Magician ๋“ฑ ๊ฐ€๋Šฅ
        characterArrayList.add(magician);
        characterArrayList.add(magician2);
        characterArrayList.add(hero); //์—ฌ๋Ÿฌ๊ฐ€์ง€ ํƒ€์ž…์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹คํ˜•์„ฑ

instanceof


์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์‹ค์ œ ํƒ€์ž…์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด instanceof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์กฐ๊ฑด๋ฌธ์— ์‚ฌ์šฉ

Magician.class

public class Magician extends Character implements ICharacter {

    @Override
    public void attack(Hero hero) {

    }

    @Override
    public void attack(Person person) {

    }
}

IChatacter ์ธํ„ฐํŽ˜์ด์Šค

package model;

public interface ICharacter { //์ถ”์‚ดํด๋ž˜์Šค์™€ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ
    void attack(Person person);
}

Character.class

package model;

public abstract class Character extends Person{
    //Magician ๋˜ํ•œ ์‹ธ์›€์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์‹ถ๋‹ค๋Š” ์ „์ œ์— ์บ๋ฆญํ„ฐ์— ์‹ธ์›€์˜ ๊ธฐ๋Šฅ์„ ๊ฐ•์ œํ™”
    public abstract void attack(Hero hero);//{}์—†์ด ๋‚ด์šฉ์ด ์—†๊ธฐ ๋–„๋ฌธ์— ์ถ”์ƒ ํด๋ž˜์Šค
}

๐Ÿ€ instanceof ์‚ฌ์šฉ์ฒ˜

  • ์กฐ์ƒ ์ฐธ์กฐ๋ณ€์ˆ˜ instanceof ์ž์† ์ธ์Šคํ„ด์Šค (๋ฌด์กฐ๊ฑด O)
  • Object o instanceof ์ž์† ์ธ์Šคํ„ด์Šค (๋ฌด์กฐ๊ฑด O)
  • ์ž์† ์ฐธ์กฐ๋ณ€์ˆ˜ instanceof ์กฐ์ƒ ์ธ์Šคํ„ด์Šค (๊ฐ€๋Šฅํ•จ O)
Magician magician = new Magician(); 
        Character magician2 = new Magician();
        ICharacter magician3 = new Magician();

        if(magician2 instanceof Magician){ //Magician์ธ์ง€ ์•„๋‹Œ์ง€ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด instanceof

        }

์ œ๋„ค๋ฆญ


์–ด๋–ค ํƒ€์ž…์ด ๋“ค์–ด์™€๋„ ๋œ๋‹ค์˜ ์˜๋ฏธ

public class Main {
    public static void main(String[] args) {
        print("์•ˆ๋…•");
        print(1);
        print(3L);
        print(true);
    }
    
    public static <T> void print(T type){ //์–ด๋–ค ํƒ€์ž…์ด ๋“ค์–ด์™€๋„ ๋œ๋‹ค์˜ ์˜๋ฏธ
        System.out.println(type);
    }
}

Thread(์Šค๋ ˆ๋“œ)


์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์„ ๋™์‹œ์— ํ•  ๋•Œ ์‚ฌ์šฉ

Runnable์€ interface๊ณ , run์€ ์ถ”์ƒ๋ฉ”์„œ๋“œ

public class Main {
    public static void main(String[] args) {
        System.out.println("1");

      new Thread(new Runnable() {
          @Override
          public void run() {
              for(int i = 0; i < 5; i++){ try {
                  Thread.sleep(1000); //1์ดˆํ›„์—
                  System.out.println(Thread.currentThread().getName() +":" + i);
              }
             catch (InterruptedException e){
                  e.printStackTrace();
              }
            }
              
          }
      }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i = 0; i < 5; i++){ try {
                    Thread.sleep(1000); //1์ดˆํ›„์—
                    System.out.println(Thread.currentThread().getName() +":" + i);
                }
                catch (InterruptedException e){
                    e.printStackTrace();
                }
                }
            }
        }).start();
        System.out.println("2");
    }
}

๊ฒฐ๊ณผ์ฐฝ

๋žŒ๋‹ค์‹


์ถ”์ƒ๋ฉ”์„œ๋“œ๊ฐ€ 1๊ฐœ์ด๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†์„ ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์œ„์˜ ์Šค๋ ˆ๋“œ์—์„œ ctrl + shift + enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ณ€๊ฒฝ๊ฐ€๋Šฅ

new Thread(() -> {
          for(int i = 0; i < 5; i++){ try {
              Thread.sleep(1000); //1์ดˆํ›„์—
              System.out.println(Thread.currentThread().getName() +":" + i);
          }
         catch (InterruptedException e){
              e.printStackTrace();
          }
        }
      }).start();

๋А๋‚Œ์  ๐Ÿคฃ


๋ฌธ๋ฒ•๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ด์šฉ๋„๋ฅผ ์•Œ๋ฉด ๋ฌธ๋ฒ•์„ ํฌ๊ฒŒ ๊ณต๋ถ€ ์•ˆํ•ด๋„ ๋ ๋“ฏํ•œ ๋А๋‚Œ

https://wikidocs.net/281 : ์ ํ”„ ํˆฌ ์ž๋ฐ”