내가 이상한건지는 ㅁㄹ 겠는데여
아니 Car클래스 보면 생성자가 있잖아여
그런데 String c String g String d를 왜 하는거야
아니 String c g d 는 아무것도 없을거 아님
그럼 그거로 초기화를 했어
그러면 이제 color gearType door에는 아무것도 없어야되는거 아닌가여
근데 왜 남아있냐
좀 알려주세여
내가 이상한건지는 ㅁㄹ 겠는데여
아니 Car클래스 보면 생성자가 있잖아여
그런데 String c String g String d를 왜 하는거야
아니 String c g d 는 아무것도 없을거 아님
그럼 그거로 초기화를 했어
그러면 이제 color gearType door에는 아무것도 없어야되는거 아닌가여
근데 왜 남아있냐
좀 알려주세여
초기화란 개념을 잘못 알고 있어. car(string c, string g, int d)는 초기화가 아니라 매개변수 선언하는 거야. 매개변수는 함수가 실행되기 위해 필요한 인자, 인수를 의미하는데 , y=f(x)란 함수에서 x라 생각하면 돼.
생성자 인수로 받아오잖아
그 매개변수에 어떤 자료형이 와야하는지를 정해 놓은 게 저거인 거야. 그리고 color=c , gear=g, door=d 부분은 인자를 받은 것을 각각 color, gear, door라는 변수에 할당, 대입해 준다는 의미야.
cgd가 인자를 받은게 없지 않아여?color 에받고 gear 에 받고 door에 받지않나여
c g d가 color, gear, door에 값을 받는 게 아니라, 반대로 color, gear, door가 c g d로 부터 값을 받는 거야. 프로그래밍 언어에서 a = 3은 ‘a는 3이다’ 가 아니라 ‘3을 a에 넣는다’ 이잖아
왼쪽에 넣는건 아는데 그 main에서 color gearType door에 white ~ ~를 넣었으면 결국 c g d 는 아무것도 안 넣은상태여야 한다는건데
color 에 white를 넣었지 c에다 넣은게 아니잖아..
인자 안넣고 직접 대입하고 출력했으까 결과가 나오지 그럼 대입하기ㅡ전에 출력해 보던가
아 그럼 님이 아래에서 한 말이랑 조합해보면 main말고는 클래스가 돌아가는게 아니라 안에 메서드를 생성하고 그 메서드를 main에서 꺼내 온거만 실행된다는거네 그러면 초기화를 아무것도 없는 걸로 c g d 로 했어도 결국 color는 그냥 white 넣은게 다라는거네 그러면 결국 main에서 딴class안에 있는 변수를 초기화 하려면 생성자가 필요하다는건데 근데 왜 생성자가 필요하냐고 ㅆ
car2 = new Car(white, auto, 4)가 그렇게 할당 , 대입되서 저런 걸과가 나오는 거지, 함수로ㅜ보면 f(white, auto, 4) = y(출력문)이라 생각하면 돼
c g d는 아무것도 없을거아님
근데 마지막줄이니까 제일 마지막에 돌아갈거고
그러면 결국 아무것도 없게 나와야 되는거 아님?
제가 실험을 해봣어요
class가 위에 있는거부터 돌아가면 그럴수도 있겠구나 하고 아래에 놔봤는데 결과가 똑같던데 그러면 main클래스가 먼저 돌아간다는거고 일단 그러면 color에 white 를 넣고 마지막에 아무것도 없는걸로 초기화가 되잖아 그럼 아무것도 안나와야되는거 아님?
병신아 클래스 부분은 ‘정의’야 저건 그냥 실행될 걸 지정하는 부분이고 실제로 동작하거나 결과를 내놓지 않아. 클래스는 생성자를 통해 객체, 인스턴스 형태로 실행 되는데, 그를 위해선 인자들을 받아야 하는 거고, 그게 car(white, auto, 4)인거야
아ㅜ씨발새끼야ㅡ네ㅡ질문이 뭔지 이제 이해했다. c1처럼 해도 되는데 왜 굳이 c2처럼 하냐는 거ㅡ같은데, c1에서 그랬듯이 일일이 대입하기 번거롭고 +전역변수 활용하기 위해 등등
생성자가 왜 필요하냐고 기본생성자 알아서 생성해주는데 그럼
ㅈㄴ 어이없네
초기화 하려고 있는거 아님? \
씹새야 초기화 하는 용도면 ‘초기화 도구’겠지 생성자겠냐? 생성자는 추상화 상태를 실체적인 인스턴스, 객체로 만들기 위해 필요한 과정, 단계인 거야. 클래스는 건물 설계도인데 실제 건물이 되려면 시공을 해야하잖아 그게 ‘생성’인 거고 생성자는 시공자쯤 되겠지. c g d는 그를 위해 필요한 자재들이고 그게 구체적으로 white, auto, 4임.
그리고 이 썅노무 새끼는 좆같고 엉망진창인 질문에도 불구하고 애써 이해하고 좋은 마음으로 알려주려는 사람한테 대하는 태도가 왜 이 모양이노? 네가 모르는 걸 분명히하고 용어 정확히 하고 질문 올려라. 공부 열심히 하장.
먼저 욕박아놓고 말많네 ; 쨋든 좋은하루 보내세요
야이 열씨미 겅부하는 장한 놈아. 니가 저 질문을 봐라. 저걸 읽고 네 의도를 네ㅡ자신이 파악할 수 있음? 쓴사람조차 뭔 뜻인지 모르는 걸 읽는 이가 어케ㅜ알겠어? 내 말은 전달을 위해 좀 더 신경 쓰자는 거야.
그리고 씨발 니가 쌍욕 박아도 된다메? 나 욕쟁이 부처 컨셉임.
알겠음 난독아저씨 신경 잘쓸게 나보다심각한사람 첨보네 저걸 못읽을정도면...
복받으세여 ^^
21번 라인의 new Car("white", "auto", 4)이 새로운 car class를 만듬과 동시에 6번 라인을 호출(6~11번 라인을 실행하라고 명령)하는데 이때 String c에는 "white", String g에는 "auto, int d에는 4를 대입하라는 소리임
님 그럼 딴 클래스는 생성자 안써도 잘만 돌아가던데 여기는 생성자를 왜쓰는거임 설명해주실수 있음?
아그러면 편하라고 생성자 쓰는거임 ? ㄳ
바로윗댓에 윾동이 설명해놨네 너가 c1에다가 한거처럼 class 만들기만 하고 변수 일일이 지정해줘도 되긴함 근데 딱봐도 c2처럼 하는게 짧아서 쉽잖아 복잡한 클래스는 뭐 구조체에 배열에 포인터에 별의별개 수십개씩 들어갈텐데 차이 크지. 그리고 c2는 정형화 되어서 실수할 확률이 낮아지지 c1은 너가 딴생각하다가 변수 하나는 초기화하는걸 깜빡하고 이래도 눈치채기 어려운데 c2처럼 생성자를쓰면 그런실수를 컴파일러가잡아주지'
ㅇㅇ
ㄳㄳ