본문 바로가기
TIL

[23.03.23.] 국비지원 풀스택 개발자 과정 - Day 12

by DevPark 2023. 3. 23.
"우리는 다 배웠다. 모른다면 복습을 안한 것...basic이 제일 중요하다" - 강사님

다형성

오버로딩(Overloading)

개념

하나의 클래스 안에서 적용되는 개념으로 같은 이름의 메서드를 여러개 정의 할 수 있다.중복정의

 

사용조건

- 메소드명은 동일해야 한다.    
- 메소드의 반환타입은 상관이 없다.

- 매개변수의 갯수가 다른 경우 //abs(int) abs(int,float)[o]
- 매개변수가 갯수가 같다면 매개변수의 데이터 타입이 다른 경우
- 3) 타입과 갯수가 같다면 매개변수 순서가 달라야한다. ex) abs(int, float) , abs(float, int) 

원래는 하나의 클래스안에서 메소드를 중복 정의해서 사용할 수 없다.
단,오버로딩을 적용해 같은 이름의 메소드를 중복정의 할 수는 있다.


생성자(Constructor)

생성자란?
객체가 생성될 때(인스턴스화) 최초로 실행되는  메소드를 의미.

 

생성자 특징
- 생성자 이름은 클래스명과 동일해야 한다
- 반환타입을 가져선 안된다.
- 생성자의 접근지정자로는 주로 public속성

 

생성자의 역할
- 멤버 변수를 초기화 하는 일은 한다
- 생성자를 정의하지 않았을 경우 컴파일러는  default(기본)생성자를 제공해준다.
- 인자 생성자를 하나라도 정의했다면, 그 때는 컴파일러가 default(기본)생성자를 제공 해주지 않는다.
- 생성자를 다양하게 오버로딩 함으로써 다양한 초기값을 부여할 수 있다.

 

기본(default) 생성자

- 매개변수(인자)가 없는 생성자이다. 반환타입은 없다.   멤버변수 초기화에 주로 사용. 

- 사용자가 기본 생성자를 정의하지 않으면 컴파일러가 자동으로 제공해준다.

// 기본 생성자(default) 형식
public 클래스명(){
super()
}

인자 생성자

- 매개변수가 있는 생성자이다.
- 인자 생성자를 정의하면 기본(디폴트) 생성자를 더 이상 제공해주지 않는다.
- 생성자 오버로딩에 해당한다.


this()
-자기 자신의 생성자를 의미한다.
-항상 생성자안에서만 사용 가능하다.
-생성자 안에서도 맨 첫번째 문장에 와야한다. 
-멤버변수만큼 인자를 가진 인자 생성자를 호출하기 위해서 주로 사용한다. (멤버변수보다 인자가 적은 생성자 안에서)

싱글톤 디자인(Single Tone Design) 

- 클래스를 설계하는 디자인 패턴의 하나로 하나의 인스턴스 즉 하나의 메모리를 생성해 이를 공유하고자 할때 사용하는 패턴 즉 하나의 메모리를 서로 공유해서 사용함으로 값 변경시 문제가 발생할 수 있는 경우는 읽기 전용으로 해야한다.         - 예)ava.util패키지의 Calendar클래스
 
 설계 방법
 1.생성자의 접근 지정자를 private으로 한다.
 2.정적 메소드로 해당 클래스의 객체를 반환하도록 정의한다.


String클래스의 생성자

- String과 StringBuffer사이는 서로 생성자로 변환할 수 있다.
- byte형 배열을 문자열로 변환 : String(byte[] bytes) 생성자 이용 - String(byte[] bytes,int 시작인덱스,int 길이)
- 문자열을 byte형 배열로:String 클래스의 getBytes()
- char형 배열을 문자열로 변환 : 생성자 혹은 static String valueOf(char[])이용 /String(char[] value) / String(char[] value, int offset, int count)
-문자열을 char형 배열로:String클래스의 toCharArray()
-아스키나 유니코드값이 저장된  int형 배열을 문자열로 변환


상속

- 단일 상속만 지원(클래스 하나만 상속받을 수 있다)
- IS A 관계 성립해야 한다. 자식 IS A 부모
- extends 키워드 사용
- private접근 지정자가 붙은 부모의 멤버는 상속은 받으나 접근이 불가능하다.

 //형식
 
   접근지정자 [지정자] class 자식클래스명  extends 부모클래스명{
  
   }

 

super()

- 부모생성자 호출

- 자식의 생성자 안에서 호출

- 항상 첫문장에 기술

- this()와 super()는 한 생성자 안에서 동시에 호출 분가

반응형

댓글