21.01.05-30일차
jdk api : 용도별로 많은 기능들이 정의된 클래스들의 집합체
final
final int NUMBER = 10;
1) 선언시 초기값
2) 생성자메서드에서 초기값
그 이후에 변경은 안된다.
🥝 클래스 디자인 패턴
Singleton
- 목적 : 객체를 단 한번만 생성하여 공유해서 사용
(클래스 디자인 패턴 검색해서 공부하기)
🥝다형성(polymorphism)
장점 1) 다형적 매개변수 2) 하나의 배열로 여러종류 객체 다루기
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
- 변수가 여러개의 타입을 가질 수 있는 의미
- 자손 타입의 참조 변수로 조상 타입의 객체를 가리킬 수 없다.
- 참조변수가 조상타입일 때와 자손타입일 때의 차이?
->참조 변수로 사용할 수 있는 멤버의 갯수가 달라짐
다형성을 공부하기에 앞서,,
Tv t; // 객체선언
-> 스택영역에 힙영역에 생성될 주소를 저장하기 위한 용도로 생성한 의미
t = new Tv(); // 객체생성
-> 실제 데이터를 저장하기 위한 힙영역의 위치에 기억장소를 생성한 의미.
-> 해당 주소가 스택영역의 변수에 할당이 된다.
Tv t = new Caption Tv(); // 타입 불일치 OK!
-> 자식객체를 생성하여 그 주소를 부모객체에 대입
-> 자식 클래스(Caption Tv)의 내용으로 힙영역에 메모리를 생성하고, 그 주소(번지)를 스택영역의 t 라는 변수에 대입
->좌측에 부모가 오고, 우측에 자손이 와야한다.
🥝 참조변수의 형변환
- 결론 : 사용할 수 있는 멤버의 갯수를 조절하는 것
- 조상 자손 관계의 참조변수는 서로 형변환 가능
class Car { } class FireEngine extends Car { } class Ambulance extends Car { }
FireEngine f = new FireEngine(); Car c = (Car)f; // OK. 조상인 Car타입으로 형변환 FireEngine f2 = (FireEngine)c; // OK 자손인 FireEngine타입으로 형변환 // 에러(자식끼리여서). 상속관계가 아닌 클래스 간의 형변환 불가. Ambulance a = (Ambulance)f;
🥝 instanceof 연산자
- 참조변수의 형변환 가능여부 확인에 사용. 가능하면 ture 반환
- 형변환 전에 반드시 instanceof로 확인해야 함
void dowork(Car c) { if (c instanceof FireEngine) { // 1. 형변환이 가능한지 확인 FireEngine fe = (FireEngine)c; // 2. 형변환 fe.water(); } }
🥝 매개변수의 다형성
- 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다.
🥝 여러 종류의 객체를 배열로 다루기
- 조상타입의 배열에 자손들의 객체를 담을 수 있다.
Product p1 = new Tv(); Product p2 = new Computer(); Product p1 = new Audio();
👇👇👇👇👇👇Product p[] =new Product[3]; p[0] = new Tv(); p[1] = new Computer(); p[2] = new Audio();
❤ 출처
👉자바의 정석👍
Author And Source
이 문제에 관하여(21.01.05-30일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ham6482/21.01.05-30일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)