다형성(3)

2021. 3. 29. 13:47·자바/기본적인 개념

1. 매개변수의 다형성

 

 

( 위와 같은 클래스들이 있다고 가정해보자. )

( Product는 Tv, Computer, Audio의 조상이다. )

( Buyer 클래스는 Tv, Computer, Audio를 구입하는 사람을 표현한 것이다. )

 

 

( 그런 다음, 위와 같이 Buyer 클래스에 buy 메서드를 오버로딩을 해주었다. )

( 하지만 제품의 종류가 늘어날 때마다 buy 메서드를 계속 오버로딩을 해주어야 된다. )

 

 

( 그래서 위와 같이 매개변수에 다형성을 추가해주면 코드가 간결해진다. )

 

 

 

 

2. 예제(1) - 매개변수에 다형성을 활용

 

 

 

 

 

 

3. 예제(2) - 매개변수에 다형성을 여러 종류의 객체 배열로 다루어 보기.

 

( 예제(1)과 Buyer 클래스와 main 클래스에서 수정이 되었다. )

( 수정한 결과 Product[] item = new Product[10]인 경우에 상품을 10개만 가능하고 11개 이상은 불가능하다는 것이다. )

( 그래서 우리는 이것을 가능하게 하기 위해서 예제(3)에서 Vector 클래스를 사용한다. )

 

 

* Vector 클래스란? 

- 동적으로 크기가 관리되는 객체 배열이다.

- 내부적으로 Object 타입의 배열을 가지고 있어서, 이 배열에 추가하거나 제거할 수 있게 작성되어 있다.

- 또한, 배열의 크기를 알아서 관리해주기 때문에 저장할 인스턴스의 개수에 신경 쓰지 않아도 된다.

 

 

 

 

4. 예제(3) - Vector를 이용하여 예제(2) 수정하기.

 

 

(정리)

- Vector item = new Vector();

- item.add(참조변수); 는 참조변수를 Vector 배열에 추가하기.

- item.remove(참조변수); 는 해당 참조변수를 Vector 배열에 제거하기.

- item.get(인덱스); 는 해당 인덱스 위치에 있는 Vector 배열을 가져오기.

( 이 때, 주의할 점은 업 캐스팅인지 다운 캐스팅인지 판별한 후, 형변환을 명시해줘야 되는지 확인한다. )

- item.size(); 는 Vector 배열의 개수 가져오기.

- item.isEmpty(); 는 Vector 배열에 저장되어 있는 객체가 비어있는지 확인한다.

 

--> add, remove, isEmpty의 반환타입은 boolean이다.

'자바 > 기본적인 개념' 카테고리의 다른 글

인터페이스  (0) 2021.12.08
추상 클래스(abstract class)  (0) 2021.12.07
다형성(2)  (0) 2021.03.29
instanceof 연산자  (0) 2021.01.14
다형성(1)  (0) 2021.01.12
'자바/기본적인 개념' 카테고리의 다른 글
  • 인터페이스
  • 추상 클래스(abstract class)
  • 다형성(2)
  • instanceof 연산자
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      람다식
      map()
      코딩트리조별과제
      제자리 정렬
      java.time 패키지
      Arrays
      소켓 프로그래밍
      알고스팟
      snail
      ServerSocket
      java.lang패키지
      Collections Framework
      스트림
      file
      역직렬화
      안드로이드 스튜디오
      outputstream
      유용한 클래스
      InputStream
      TCP 소켓 프로그래밍
      코드트리
      코딩테스트
      serializable
      문자 기반 스트림
      안정 정렬
      자바 개념
      불안정 정렬
      중간연산
      다형성
      선택 정렬
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    다형성(3)
    상단으로

    티스토리툴바