인프런 커뮤니티 질문&답변

주연님의 프로필 이미지
주연

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

Q. 오버로딩과 오버라이딩은 무엇인가요? ★★★

오버로딩 질문드립니다.

작성

·

222

1

class family {
	member (a){
		this.name=a
		console.log("member의 이름은 "+ this.name+"입니다.")
	}
	member (a,b){
		this.name=a
		this.age=a
		console.log("member의 이름은 "+ this.name+"입니다.")
		console.log("member의 나이는 "+ this.age+"입니다.")
	}
	member (a,b,c){
		this.name=a
		this.job=b
		this.age=c
		console.log("member의 이름은 "+ this.name+"입니다.")
		console.log("member의 직업은 "+ this.job+"입니다.")
		console.log("member의 나이는 "+ this.age+"입니다.")
	}
}

const familymember = new family();

familymember.member("승현",20);
familymember.member("다연","학생",22);

 

위 코드를 실행시키면 오버로딩되어 첫번째 는

member의 이름은 승현입니다. member의 나이는 20입니다.

위 코드를 실행시키면 오버로딩되어 두번째 는

member의 이름은 다연입니다. member의 직업은 학생입니다. member의 나이는 20입니다.

 

로 출력되어야 하는거 아닌가요>?? 위처럼 실행시키면

 

member의 이름은 다연입니다. member의 직업은 학생입니다. member의 나이는 undefined입니다.

member의 이름은 다연입니다. member의 직업은 학생입니다. member의 나이는 20입니다.

 

로 나옵니다.!

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 주연님 ㅎㅎ

자바스크립트는 오버로딩을 지원하지 않습니다.

만약 오버로딩을 하실 거면 받아오는 매개변수의 길이 arguments.length를 기반으로 구축하거나 매개변수마다 if문을 걸어서 구현하셔야 합니다.

제가 주연님 코드를 한번 수정해봤는데요. 참고부탁드립니다.

class family {
  member(a, b, c) {
    this.name = a
    console.log("member의 이름은 " + this.name + "입니다.")
    if (b) {
      this.job = b
      console.log("member의 직업은 " + this.job + "입니다.")
    }
    if (c) {
      this.age = c
      console.log("member의 나이는 " + this.age + "입니다.")
    }
  }
}

const familymember = new family();

familymember.member("승현", 20);
familymember.member("다연", "학생", 22);

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

주연님의 프로필 이미지
주연

작성한 질문수

질문하기