배운 내용
- reference 타입
- 인스턴스(Instance)
- 추상메소드(Abstract)
- instanceof 연산자
1. reference(레퍼런스) 타입
레퍼런스 타입은?
메모리상에 할당되는 각각의 공간에 참조를 위한 주소값이 들어가는 타입을 말한다.
- 상속 관계에서만 유효하다.
Account obj1 = new CheckingAccount -> 이는 Account로 형변환이 된 것 - 상위클래스 객체에 하위클래스 객체를 담을 수 있지만 반대의 경우 불가능하다.
CheckingAccount obj2 = (CheckingAccount) obj1 -> obj2를 1로 강제로 형변환 시켜야한다.
2. 인스턴스
인스턴스는?
객체가 실질적으로 메모리를 차지하게 되는 것을 말한다.
- 이런 생성된 객체를 실제로 생성하는 것을 인스턴스화라고 한다.
- str을 String클래스로 객체를 선언
- new를 사용하여 str에 메모리를 할당해주고 출력하면 인스턴스화 한다는 것이다.
3. 추상메소드(Abstract)
추상메소드는?
abstract를 사용하여 자식클래스가 반드시 추상메소드를 구현하도록 시킨다.
- abstract키워드를 사용하여 추상클래스를 형성하여 메소드를 생성한다.
- 메소드에는 메소드 제외 내용을 첨가하지 않는다.
이유는 자식클래스에게 오버라이딩을 강요하게 만들어 졌기 때문이다. - 추상클래스를 쓰는 이유는 코드의 독립성을 강조하기 때문이다.
- abstract키워드를 사용하여 Role이라는 클래스를 만들었다.
- doIt 메소드를 선언하고 끝낸다.
- Role을 상속하는 Driver 자식클래스를 생성하여 오버라이드를 한다.
- 출력은 운전 역할을 할 예정이다.
- Role을 상속하는 Work 자식클래스를 생성하여 오버라이드를 한다.
- 출력은 작업 역할을 할 예정이다.
- 필드변수로 이름과 추상메소드를 선언하고 디폴트값을 생성한다.
- 생성자를 생성하는데 이 때 파라미터 값으로 추상메소드가 나타나고 있다.
- doIt 메소드를 생성하여 doIt을 출력시킨다.
- get, set을 생성한다.
- Person의 객체를 생성하여 파라미터 값을 입력해준다.
- 이 때 new Work를 선언하여 Work의 메소드를 출력한다.
- doIt을 출력시키면 작업 역할이 출력되고 Driver을 선언하면 운전 역할이 출력된다.
4. instanceof 연산자
instanceof는?
인스턴스의 실제 타입을 알아보기 위하여 사용한다.
- 형변환이 가능한지의 여부를 판단해준다.
- 주로 조건문에 사용한다.
- 조건은 “참조변수 instansof 타입” 으로 실행된다.
새로운 전화번호부 예제를 풀어보면서 instanceof 연산자가 포함되어있는 예제를 학습해보도록 하자
- PhoneInfo 클래스에 대한 자식클래스를 생성한다.
- override를하여 PhoneInfo의 show메소드를 재정의한다.
- getter, setter를 선언한다.
- PhoneInfo 클래스에 대한 자식클래스를 생성한다.
- override를하여 PhoneInfo의 show메소드를 재정의한다.
- getter, setter를 선언한다.
- 변수에 대한 생성자를 선언하고 디폴트 생성자를 선언한다.
- phoneInfo의 변수에 대한 출력값을 show메소드로 선언한다.
- getter, setter를 선언한다.
- Manager클래스에 있는 출력된 메소드들을 불러들이기 위해 객체를 선언해준다.
- static을 통하여 만들어준 Scanner를 통하여 입력값을 선언하고 while switch문을 이용하여 입력시 출력이 될 수 있도록 한다.
- 추가를 할 때 학생인지 직원인지 선택하기 위해선 switch문을 이용하여야 한다. addPhoneInfo메소드 안에 switch문을 생성하여 출력값을 입력해주고 생성한 phoneInfo 배열을 이용하여 등록을 완료 할 때마다 count가 추가되도록 한다.
- 전체출력 부분에선 3가지를 출력해야하므로 동일하게 switch문을 이용하고 그냥 전체출력시 다른 조건 없이 배열을 출력시키면 되겠고 학생과 직장인을 구별하여 출력할 때에는 instanceof 연산자를 이용하여 if문을 사용해 형변환을 확인한 후에 출력시킨다.
- instanceof를 살펴보자면 배열이 Universe, Company와 형변환이 된다면 을 조건하고 있으니 상속관계이기 때문에 출력이 된다고 볼 수 있다.
- 나머지 메소드들은 이전 과제에서 설명하였으니 참고해주면 되겠다.
'KOSTA' 카테고리의 다른 글
KOSTA 교육 (Calendar, Random, 정규표현식) (0) | 2021.02.24 |
---|---|
KOSTA 교육 (Interface, Object Class, Nested Class, String API, BoxingUnboxing) (0) | 2021.02.23 |
KOSTA 교육 (정적 필드, 정적 메소드, 정적 초기화, 상수 필드, final, 오버로딩, 오버라이딩, 상속) (0) | 2021.02.19 |
KOSTA 교육(객체지향, 생성자, 접근제어자, 예외) (0) | 2021.02.18 |
KOSTA 교육 (객체지향 , 생성자, 배열) (0) | 2021.02.18 |