본문 바로가기
코드프레소 체험단/Java 프로그래밍

[Java 프로그래밍 초급] 객체지향 기초개념 (3)

by 의정부핵꿀밤 2022. 1. 20.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - Java 프로그래밍 초급 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr

 


생성자(Constructor)

  • 객체가 생성되는 시점에 호출되는 특별한 형태의 메소드
  • 객체가 생성되는 시점에 초기화를 하기 위해 사용된다
    • 주로 생성자에서는 객체 멤버 변수의 초기화 작업을 한다
  • 멤버 변수를 명시적으로 초기화하지 않은 경우에는 아래와 같이 저장된다
    • 숫자형 변수 : 0
    • boolean 변수 : false
    • 참조 변수 : null

 

 

 

생성자(Constructor)의 문법

  • 생성자의 이름은 클래스의 이름과 동일하다
  • 접근 제어자는 보통 public을 사용한다
  • 0개 또는 1개 이상의 파라미터를 선언할 수 있다
  • 리턴 타입은 생략된다
  • 파라미터가 없는 경우는 아래와 같이 생성자를 추가한다
    • 초기화 값을 직접 지정(하드코딩)
  • 파라미터가 있는 경우에는 아래와 같이 생성자를 작성한다
    • 모든 멤버 변수의 값을 인자로 전달받아 초기화하는 생성자
  • 또한 객체 생성과 함께 전달하는 인자 값으로 객체의 멤버 변수를 초기화할 수도 있다
  • 멤버 변수의 일부만 초기화할 수도 있다

 

 

 

Default 생성자

  • 생성자를 명시적으로 추가하지 않은 경우 Default 생성자를 제공한다
  • 단, 1개 이상의 생성자를 명시적으로 구현한 경우에는 제공하지 않는다
  • Default 생성자 사용의 예시

 

 

 

생성자 정리!

  • 셍성자는 객체가 생성될 때 호출되는 특별한 형태의 메소드
  • 생성자의 이름은 클래스명과 동일하며 리턴 타입은 사용하지 않는다
  • 생성자는 주로 객체의 멤버 변수를 초기화하는 목적으로 사용한다
  • 생성자를 명시적으로 구현하지 않은 경우에는 Default 생성자를 제공한다
  • 파라미터가 있는 생성자를 호출하기 위해서는 new 키워드로 객체 생성 시 인자를 전달해야 한다

같은 작업을 하지만 파라미터만 다른 메소드가 필요한 경우

  • C언어 수학 관련 함수 중 절댓값을 구하는 함수의 종류
    • abs(), labs(), fabs(), cabs()
  • 메소드를 사용할 때 동일 작업을 위한 다양한 이름의 메소드를 기억해야 한다
  • 메소드를 개발할 때 파라미터의 조합에 따라 다양한 이름을 생성해야 한다
    • 명확한 동작을 의미하는 것이 아닌 조악한 이름이 만들어질 수 있다!

 

 

메소드 오버로딩(Method Overloading)

  • 특정 클래스 안에서 파라미터가 다른 동일한 이름의 메소드를 선언한다
  • 파라미터의 자료형 또는 개수가 다르면 동일한 이름을 사용할 수 있다
  • 메소드 호출 시 파라미터 세팅 조건에 따라 호출되는 메소드가 결정된다
  • 리턴 타입은 메소드 오버로딩의 조건에 해당하지 않는다
  • 아래와 같이 파라미터가 동일한데 리턴 타입만 다른 것은 메소드 오버로딩을 사용할 수 없다!

 

 

생성자 오버로딩

  • 생성자도 특수한 형태의 메소드이기 때문에 오버로딩 적용이 가능하다
  • 초기화를 원하는 멤버 변수만 선택해서 초기화가 가능하다
  • 생성자 오버로딩은 빈번하게 사용된다
  • 아래의 예시는 객체 생성 시 세팅하는 파라미터의 조합에 따라 서로 다른 생성자가 호출된다

 

 

 

메소드 오버로딩 정리!

  • 메소드 오버로딩은 서로 다른 조합의 파라미터를 사용하는 동일한 이름의 메소드를 한 클래스 내부에서 사용하는 것이다
  • 의미있는 메소드의 이름을 여러 메소드에 사용할 수 있다
  • 메소드 호출 시 세팅하는 파라미터에 따라 어떤 메소드가 호출될지 결정된다
  • 리턴 타입은 메소드 오버로딩의 조건이 되지 않는다
  • 생성자도 오버로딩이 가능하다

 

728x90

댓글