[질문] 6주차
210428 화요일
<질문1>
다른 클래스의 멤버변수를 사용하기 위해 객체를 생성하고 s.멤버변수명의 형태로 사용하는데, 그렇다면 어떤 경우에 int a와 같은 변수가 필요한 것이고 어떤 경우에 int a없이 사용가능한 것인가?
설명: static이 있는 클래스의 경우는 상관없지만 메소드를 사용하려면 저런 방식으로 변수가 항상 필요하다.
<질문2> 생성자를 호출하는 이유
클래스를 만들고 생성자를 만드는 것은 알겠다. 그런데 왜 만들어야 하는지 모르겠다. 이유가 있는가?
(생활코딩 참고)
▶생성자란?
- 어떤 일을 시작하기 전에 준비를 하게 되는데 다른 말로 초기화라고 한다. 객체지향 프로그램도 초기화에 해당하는 기능을 제공하는데 이것을 생성자라고 한다. 생성자는 그 이름처럼 객체를 생성할 때 호출된다.
- 생성자는 인스턴스를 생성해주는 역할을 하는 특수한 메소드라고 할 수 있다. 그런데 반환 값이 있다면 엉뚱한 객체가 생성될 것이다. 따라서 반환 값을 필요로하는 작업에서는 생성자를 사용하지 않는다. 반환 값이 없기 때문에 return도 사용하지 않고, 반환 값을 메소드 정의에 포함시키지도 않는다.
- 생성자를 이용해 객체를 생성하는 방법
해당 클래스의 객체를 생성한 변수 이름.해당 클래스의 메소드 ex) cl.sum();, cl.avg();
<질문3> 기본생성자와 매개변수가 있는 생성자
- 객체를 생성할 때 Friend f2 = new Friend("사오정", 45); 이렇게 값?을 넣을 수 있는건가?
- 클래스의 객체를 생성할 때 매개변수가 있는 것이 있고 없는 것이 있던데, 기본생성자는 ()안을 비워두는 것이고 매개변수가 있는 생성자의
()안에는 타입에 맞게 대입할 값이 항상 들어가 있어야 하는 건가?
- 클래스 Friend의 멤버변수 앞에 private이 있다 가정하고 메인 메소드에소 객체 생성 후 f.name을 출력하라고 할때 f.name과 f2.name이 가리키는 것은? f2.name -> this.name = name;?
설명: 생성자 혹은 메소드를 사용할 때, 매개변수가 있는 메소드 사용시 값이 들어가 있어야 한다.
<질문4>
- 생성자는 while을 가지고 반복하는 기능을 가지는 것? 기능이라고 볼 수 있나?
- 생성자에 선언된 int choice는 while문 안에서 choice = menu();라고 초기화된 것?
<질문5>
강의 다시 한번 보고 이해안되면 질문
<질문6>
FitnessService service = new FitnessService();에서 new FitnessService(); 이렇게만 써도 되는 이유가 궁금.
<질문7>
아! 여기서 FinessVO는 생성자를 말하는 듯.
FinessVO member;
이렇게 쓰는 경우가 있었나?
생성자는 이런식으로 지정해서 멤버변수로 할 수 있는건가?
설명: 생성자도 결국 메소드이기 때문에 사욯할 수 있다.