4.오버로딩과 오버라이딩의 차이

코드스테이츠·2023년 1월 11일
0

2.클래스와 객체

제품의 설계도와 제품의 관계

클래스

클래스는 객체를 정의한 설계도 혹은 틀이다
객체를 생성되는데 사용됨
구성요소 필드(field), 메서드(method), 생성자(constructor), 그리고 이너 클래스(inner class)

(1) 필드 - 클래스의 속성을 나타내는 변수입니다. 자동차로 예를 들면 모델명, 컬러, 바퀴의 수 등이 포함될 수 있습니다.

(2) 메서드 - 클래스의 기능을 나타내는 함수입니다. 자동차를 예로 들면 시동하기, 가속하기, 정지하기 등이 포함될 수 있습니다.

(3) 생성자 - 클래스의 객체를 생성하는 역할을 합니다.
생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드

(4) 이너 클래스 - 클래스 내부의 클래스를 의미합니다.
클래스 내에 선언된 클래스로, 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용합니다.
내부 클래스를 사용하면 외부 클래스의 멤버들에 쉽게 접근 할 수 있고, 코드의 복잡성을 줄일 수 있습니다.

이 중 생성자를 제외한 나머지 3가지 요소를 우리는 클래스의 멤버(member)라 부릅니다.
필드와 메서드는 각각의 클래스가 가지는 속성(state)와 기능(behavior)을 대표합니다.
속성과 기능은 해당 클래스와 관련된 데이터의 집합이며, 핵심적인 정보를 담고있다고 할 수 있습니다.

객체

클래스에 의해 정의되고 설계된 내용 그대로 생성된다
실제로 사용할 수 있는 실체

객체는 크게 속성과 기능이라는 두 가지 구성요소
속성과 기능은 각각 필드와 메서드로 정의되다
일반적으로 하나의 객체는 다양한 속성과 기능의 집합으로 이뤄져 있습니다. 그리고 이러한 속성과 기능은 이너클래스와 함께 객체의 멤버(member)라 부릅니다.

ex)
속성으로 차의 모델명, 바퀴의 개수, 문의 개수, 컬러
기능으로는 시동 걸기, 가속하기, 감속하기, 정지하기 등의 기능

인스턴스
클래스를 통해 생성된 객체
클래스로 부터 객채를 만드는 과정 = 인스턴스화
객체와 인스턴스는 같은 말이라 구분하는건 큰 차이가 없다
객체는 모든 인스턴스를 포괄하는 넓은 의미
인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조

4.오버로딩과 오버라이딩의 차이

  1. 오버로딩(Overloading)
  • 메서드의 이름은 같고 매개변수의 갯수나 타입이 다른 함수를 정의하는 것을 의미한다.
  • 리턴값만을 다르게 갖는 오버로딩은 작성 할 수 없다.

-하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것
-보통 하나의 메서드에 하나의 기능만을 구현해야하는데, 같은 이름의 메서드를 여러 기능을 구현하기 때문에 오버로딩이란 용어를 사용한 것이라 생각해볼 수 있습니다.
-가장 큰 장점은 하나의 메서드로 여러 경우의 수를 해결할 수 있다

  1. 오버라이딩(Overriding)
  • over + ride = 먼가 위에서 (라이딩 한다)달린다???
  • 상위 클래스의 메서드를 하위 클래스가 재정의 하는 것이다.
  • 메서드의 이름은 물론 파라메터의 갯수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용된다.

-메서드 오버라이딩(Method Overriding)은 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것

상위 클래스의 메서드를 오버라이딩하려면 다음의 세 가지 조건 만족해야됨
1. 메서드의 선언부(메서드 이름, 매개변수, 반환타입)이 상위클래스의 그것과 완전히 일치해야한다.

  1. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다.

  2. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.

-이처럼 메서드 오버라이딩은 상위 클래스에 정의된 메서드를 하위 클래스에서 메서드의 동작을 하위 클래스에 맞게 변경하고자 할 때 사용합니다.

즉,
오버로딩(Overloading)은 기존에 없던 새로운 메서드를 정의하는 것이고,
오버라이딩(Overriding)은 상속 받은 메서드의 내용만 변경 하는 것이다.

구분오버로딩오버라이딩
메소드 이름동일동일
매개변수, 타입다름동일
리턴 타입상관없음동일

14. 제네릭에 대해서 설명하고, 컬렉션 클래스에서 왜 제네릭을 사용하는 지 설명해주세요

제너릭이란

-타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것
즉, 작성한 클래스 또는 메서드의 코드가 특정 데이터 타입에 얽매이지 않게 해둔 것을 의미

필요성

대부분의 클래스는 하나의 타입만을 저장할 수 있는 인스턴스를 만들수 있다.
그렇기에 다양한 타입의 데이터를 저장하려는 인스턴스화를 하려면 각 타입별로 별도의 클래스를 만들어야된다
-데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법
-단 하나의 클래스만으로 모든 타입의 데이터를 저장할 수 있는 인스턴스를 만들 수 있습니다.

컬렉션이란
-여러 데이터들의 집합을 의미합니다
-즉, 여러 데이터들을 그룹으로 묶어놓은 것을 컬렉션

여러 데이터의 집합인 만큼 제너릭을 사용하지 않는다면 구현 불가능함

0개의 댓글