21.01.05-30일차

되자개발자·2021년 3월 3일
0

기록하기

목록 보기
30/46
post-thumbnail

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();

❤ 출처

👉자바의 정석👍

profile
열심히가 되는 길♨_♨

0개의 댓글