본문 바로가기
IT/JAVA

[Java]생성자 사용

by 행복한 용용이 2020. 7. 4.
반응형

생성자 사용

 

빈 깡통 자동차 만들어 놓은 후에 차이름,색상 등을 지정

 

 

먼저 차이름,색상을 지정하고 싶다.- 생성자의 객체초기화

 

 

하지만 다른 색도 지정하고 싶다. 생성자가 같은 것이 두개 있다고 에러가 난다.

 

 

생성자의 오버로딩

 

 

 

 

인자값의 이름과 상관 없이 인자값이 String으로 같은 생성자가 두개임으로 에러

 

 

인자값의 String갯수가 다른 생성자임으로 이것은 괜찮다.

 

 

앞쪽이 차이름, 뒤에가 색임으로 호출할 때도 순서를 지켜야한다.

순서를 지키지 않으면 컴퓨터는 인식하지 못하기 때문에 이상한 값이 들어간다.

 

 

이름,색,메이커까지 바꿀수 있는 생성자

 

 

 

 

사용자 정의 생성자가 없을 경우 default 생성자가 생략되어 있지만

사용자 정의 생성자를 하나 이상 만들면 default 생성자는 사라진다.

따라서 default 생성자를 생략하면

 

 

오류난다.

 

 

생성자의 인자 이름을 c등의 알아보기 힘든 이름으로 지정하는 것은 좋지 않다.

따라서 color로 바꿔보았다.

 

색상이 null이 나온다.

 

 

this

public Car(String color) { //지역변수

              color carName = "쏘나타";

              //color = color; //전역변수 color에 지역변수 color를 집어넣어라

                        //전역변수와 지역변수 이름이 같을 경우 지역변수 우선권이 있다. 가까이 있는 것

                        //이렇게 color=color를 하면 지역변수 color=지역변수color가 되어 여긴 흰색이 들어가지만

                        //전역변수 color에는 아무것도 들어가지 않은 null이 된다.

                        // >>carUser클래스에서 car2.color를 해주면 이것은 전역변수 color를 불러오는 것이기에 null이된다.

 

                        //따라서 가까이 있는 지역변수 쓰지 말고 전역변수를 쓰게 해야함

                        //같은 클래스에 있으면 객체.을 생략해도 되지만

                        //이런 경우 써야한다.

              //Car car = new Car();

              //car.color = color;

              //System.out.println(">>>>>>>>>>>>>>>>>>>>"+car.color); //흰색으로 나옴.

                                                                                     //new를 써서 새로운걸 만들었기 때문

                                                                                     //아직도 car2는 null이고 새로운 car에 흰색 들어간것

                                                                                     //새로운자동차가아니라 현재 이 클래스의 .color를 color흰색으로 해라

this.color = color; //따라서 new가아니라 this 써야함.

                       //this.을 알아서 버춰머신이 붙였던건데 지역변수,전역변수가 이름이 같아버리면 지역변수

                       우선권때문에 this가 사라져버린다. 따라서 this를 붙여줘야함. 자기자신이 가지고 있는 color에다

                       지역변수 color를 집어넣어라 라고 해야함

                       //this로 자기 클래스에 전역변수라는 것을 알려줘야함.

maker = "현대";

}

 

 

 

 

아래의 생성자로 나머지 생성자를 간단히 하고싶다.

 

 

 

 

생성자는 new 연산자와 함께 호출 > 다 null이 된다.

 

 

 

 

따라서 this를 써야한다. //자기가 가지고있는 생성자를 호출할때는 this를 쓴다.

                              //this는 반드시 생성자의 첫번째 줄에 있어야한다. this 위에 다른거 쓰면 에러남.

                              //this는 두개 못쓴다. 하나만 !

[출처] 빡쏘끼룩

반응형