1. 기타 내용

이름, 눈갯수, 팔갯수, 다리갯수를
변수로 가진 클래스 People를 만들고
생성자를 만들었다.
1) 멤버 변수
멤버 변수는 특정 클래스 내에서
선언될 경우 생성된다.
이 멤버변수는
접근 지정자 변수형 변수명 = 기본값;
으로 선언된다.
접근제한자는 총 3가지 종류가 있는데
1. public
2. private
3.public
이다.
1. public: 언제 어디서나 해당 변수에 접근이 가능하다.
변수를 불러와 값을 언제든지 바꿀 수 있다.
2. private: 자신을 포함한 패키지에서만 해당 클래스로 접근 가능하다.
다른 패키지 일 경우, 상속받은 경우에도 접근이 불가능하다.
3. protected: 동일한 패키지 내에서는 접근 가능하다.
다른 패키지일 경우, 상속받아야 접근 가능하다.
2) 생성자
생성자는 인스턴스를 생성하기 위한 특별한 메소드로
1. 생성자의 이름 = 클래스명
2. 반환형을 사용하지 않기에 값을 반환할 수 없다.
3. 오버로딩이 가능하다. (= 여러 개 선언 가능하다.)
라는 작성 방법을 가지고 있다.
이 생성자는
인스턴스 생성 시 필드에 초기값을 부여하기 위해,
인스턴스 생성에 필요한 초기화 명령을 실행하기 위해 사용된다.
여기서 주의해야 할 점은
추상, 인터페이스 클래스는 객체를 생성할 수 없단 점이다.
3) 추상 클래스 및 인터페이스 클래스
추상 클래스란,
클래스 내의 멤버변수, 생성자는 정확하게 지정하나
함수는 추상적으로 표현하는 클래스를 말한다.
abstract라는 키워드를 통해 나타낸다.
접근 제한자 abstract class 클래스명{ }

생성해놓은 추상 클래스를 살펴보면
멤버변수와 생성자 안에는
값이 정확하게 지정되어 있는 모습을 볼 수 있다.
그러나, 함수에는 아무런 기능이 들어있지 않은 모습을 볼 수 있는데
이를 추상 메서드라고 한다.
추상 메서드는 어떤 일을 하는지 정확하게 나타내지 않기에
상속 했을 경우 자식 클래스에서 꼭 다시 재정의를 해줘야 한다.
인터페이스 클래스는
필드 없이 메소드만 가지고 가이드라인만을 제공하는 클래스를 말한다.
interface라는 키워드를 통해 생성하며
접근 제한자 interface class 클래스명{ }
형태로 사용한다.
4) Factory Pattern
하나의 객체당 하나의 기능만을 수행할 수 있다.
그러나 아래와 같이 만들면
하나의 객체로 여러개의 기능을 수행할 수 있다.

메인 클래스 안에 아래 코드 삽입

2. 상속

다음과 같이 사람을 상속받는 클래스 슈퍼맨이 있다.
부모 클래스인 사람 클래스에

걷기 기능과 뛰기 기능을 하는 메서드가 있다.
두 기능은 다 public으로 선언되어 있기에
자식 클래스인 슈퍼맨 클래스에서 사용할 수 있을 것이다.

객체를 생성시켜 run메서드를 실행시켜보았다.

잘 실행되는 것을 확인할 수 있다.
1) 오버라이딩
그렇다면 부모 메서드를 자식 클래스에서
다시 재정의하는 오버라이딩도 가능할까?

부모 메서드인 walk를 가져와
기존의 출력문구와 다른 출력문구를 입력시켜보았다.
오버라이딩이 된다면
바뀐 출력문구인
SuperMan Fast Walkig이 출력되어야 한다.

출력 결과 바뀐 출력문구가 나오는 것을 확인할 수 있었다.
2) 오버로딩
오버라이딩과 비슷한 이름을 가졌지만
하는 일은 전혀 다른 오버로딩은
1. 같은 함수명
2. 매개변수의 갯수가 다르거나
3. 매개변수의 자료형이 달라야 함
의 특징을 가지고 있다.
같은 함수명을 가지고 있어도
사용자가 입력한 매개변수의 갯수나 자료형에 따라
컴퓨터가 알아서 판단, 실행시켜준다.

다음과 같이 똑같은 이름을 가진 함수들이
여러개 있으나, 오류(빨간줄)이 나타나지 않은
모습을 확인할 수 있다.
그렇다면 실행시켜보면 어떨까?

다른 매개변수의 갯수와, 자료형을 넣어
실행시켜보았다.

그랬더니 각각의 매개변수를 읽고
컴퓨터에서 알아서 판단해
올바른 함수를 실행시키는 모습을 확인할 수 있었다.
'JAVA' 카테고리의 다른 글
| 06. LinkedList 구현해보기 (0) | 2022.02.24 |
|---|---|
| 05. ArrayList 구현해보기 (0) | 2022.02.23 |
| 04. 네비게이션 바 구현하기 (0) | 2022.02.22 |
| 02. 정적변수와 정적함수, 배열 (0) | 2022.02.18 |
| 01. 자료형과 멤버 접근 범위지정자, 생성자, 함수 오버로딩 (0) | 2022.02.18 |