โ˜• Java vs ๐Ÿ Python: ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ ๋น„๊ต


๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ ํด๋ž˜์Šค์˜ “๋ฉค๋ฒ„ ๋ณ€์ˆ˜(ํ•„๋“œ)”๋ฅผ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•˜๋А๋ƒ๋Š” ์–ธ์–ด๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Java์™€ Python์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ ์ฐจ์ด์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๋น„๊ตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น Java: ๋ช…์‹œ์ ์ธ ์„ ์–ธ์ด ํ•„์ˆ˜

Java์—์„œ๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜๋“œ์‹œ ํด๋ž˜์Šค์˜ ์ •์˜ ์˜์—ญ์— ๋ฏธ๋ฆฌ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

public class Dog {
    private String name;
    private int age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
  • ํด๋ž˜์Šค ๋งจ ์œ„์—์„œ **private String name;**์ฒ˜๋Ÿผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ
  • ์ƒ์„ฑ์ž์—์„œ๋Š” ์ดˆ๊ธฐํ™”๋งŒ ์ˆ˜ํ–‰
  • ํƒ€์ž…์ด ๊ณ ์ •๋˜์–ด ์žˆ๊ณ , ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ•ด์คŒ
  • ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ์ •์  ํƒ€์ž…์˜ ์žฅ์ 

๐Ÿ”ธ Python: ์„ ์–ธ ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Python์€ ํ›จ์”ฌ ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” __init__() ๊ฐ™์€ ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ๋ฐ”๋กœ self.๋ณ€์ˆ˜๋ช…์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
  • self.name = name์—์„œ self.name์ด๋ผ๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ์ฆ‰์‹œ ์ƒ์„ฑ๋จ
  • ๋ฏธ๋ฆฌ ์„ ์–ธํ•  ํ•„์š”๊ฐ€ ์—†์Œ
  • ํ•˜์ง€๋งŒ ์‹ค์ˆ˜๋กœ ์˜คํƒ€๋ฅผ ๋‚ด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์—์„œ ์ž˜๋ชป๋œ ์†์„ฑ์„ ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ์Œ

๐Ÿ’ก ์˜ˆ์‹œ ๋น„๊ต: ์„ ์–ธ ์œ„์น˜

๊ตฌ๋ถ„JavaPython
๋ณ€์ˆ˜ ์„ ์–ธํด๋ž˜์Šค ๋ธ”๋ก ์ตœ์ƒ๋‹จ์— private String name; ๋“ฑ ๋ช…์‹œ์ƒ์„ฑ์ž ์•ˆ์—์„œ self.name = name๋กœ ๋ฐ”๋กœ ์ƒ์„ฑ
๋ณ€์ˆ˜ ํƒ€์ž…๋ฐ˜๋“œ์‹œ ์ง€์ • (int, String, etc)๋™์  ํƒ€์ดํ•‘ (int, str ๋“ฑ ์ž๋™ ์ธ์‹)
์ƒ์„ฑ์ž ์—ญํ• ์ด๋ฏธ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ๊ฐ’๋งŒ ํ• ๋‹น์„ ์–ธ + ํ• ๋‹น์„ ๋™์‹œ์— ์ˆ˜ํ–‰
์œ ์—ฐ์„ฑ๋‚ฎ์Œ (์ปดํŒŒ์ผ ํƒ€์ž„ ์ฒดํฌ)๋†’์Œ (๋Ÿฐํƒ€์ž„์— ๋ณ€์ˆ˜ ์ƒ์„ฑ ๊ฐ€๋Šฅ)

โœ… ๋ณด๋„ˆ์Šค: ํด๋ž˜์Šค ๋ณ€์ˆ˜ vs ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ (Python ์˜ˆ์‹œ)

class Dog:
    species = "Canine"  # ํด๋ž˜์Šค ๋ณ€์ˆ˜ (๊ณต์œ ๋จ)

    def __init__(self, name):
        self.name = name  # ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ (๊ฐœ๋ณ„ ๊ฐ์ฒด๋งŒ ๊ฐ€์ง)

Dog.species๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๊ฐ’,
self.name์€ ๊ฐ ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง.

Java์—์„œ๋Š” static ํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์ฃ .


๐Ÿง  ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ

ํ•ญ๋ชฉJavaPython
๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์„ ์–ธํด๋ž˜์Šค ์ •์˜๋ถ€์— ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ ๋ฐ”๋กœ ์ •์˜ ๊ฐ€๋Šฅ
์„ ์–ธ์˜ ์œ ๋ฌด์„ ์–ธ ํ•„์ˆ˜์„ ์–ธ ์ƒ๋žต ๊ฐ€๋Šฅ
์ ‘๊ทผ์ œ์–ดprivate, public, protected ๋“ฑ ๋ช…ํ™•ํ•จ๋ช…์‹œ์  ์ œ์–ด์ž ์—†์Œ (_, __๋กœ ๊ด€๋ก€ ํ‘œ์‹œ)
์‹ค์ˆ˜ ๋ฐฉ์ง€๋†’์€ ์•ˆ์ •์„ฑ (์ปดํŒŒ์ผ ํƒ€์ž„ ์˜ค๋ฅ˜)์œ ์—ฐํ•˜์ง€๋งŒ ์‹ค์ˆ˜์— ์ทจ์•ฝ

Python์„ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” Java ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ด ์ฐจ์ด์—์„œ โ€œ์–ด? ์ด๊ฒŒ ๋˜๋„ค?โ€ ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€๋กœ Python์— ์ต์ˆ™ํ•œ ๋ถ„๋“ค์ด Java๋กœ ๋„˜์–ด์˜ค๋ฉด ๋ช…ํ™•ํ•œ ํƒ€์ž… ์„ ์–ธ๊ณผ ์ ‘๊ทผ์ œ์–ด์˜ ์žฅ์ ์„ ์ฒด๊ฐํ•˜๊ฒŒ ๋˜์ฃ .


๐Ÿ“Œ ๋‹น์‹ ์€ ์–ด๋А ์ชฝ ์Šคํƒ€์ผ์ด ๋” ์ต์ˆ™ํ•˜์‹ ๊ฐ€์š”?
๊ฐ„๊ฒฐํ•จ์„ ์ค‘์‹œํ•œ๋‹ค๋ฉด Python, ์•ˆ์ •์„ฑ์„ ์ค‘์‹œํ•œ๋‹ค๋ฉด Java!
๋‘ ์–ธ์–ด๋ฅผ ๋„˜๋‚˜๋“œ๋Š” ๊ฐ๊ฐ์„ ํ‚ค์›Œ๋ณด์„ธ์š” ๐Ÿ˜Ž


์ฝ”๋ฉ˜ํŠธ

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค