JAVA 28강

주바나·2023년 3월 7일
0

JAVA 기초

목록 보기
10/16
post-thumbnail

상속


class 검은고양이 extends고양이{}

고양이 a검은고양이=new검은고양이();
a.검은고양이.야옹();

변수의 타입 (고양이) 과 객체 타입 (검은 고양이) 이 같지 않다.
변수가 고양이라서 a검은고양이에는 고양이 리모콘만 들어갈 수 있다.= 고양이만 연결
검은고양이는 고양이인가? ㅇㅇ

통합 리모콘


통합 리모콘을 만들면 한방에 다 처리할 수 있으니 편하다. 하지만 고유의 기능은 처리하기 어려움.

 TV aTv1 =new LGTv();
 TV aTv2 =new 샤오미Tv();
 TV aTv3 =new 삼성Tv();
 TV aTv4 =new 독일Tv();
 
 TV[] tvs = new TV[4];
 tvs[0]=aTv1;
 tvs[1]=aTv2;
 tvs[2]=aTv3;
 tvs[3]=aTv4;
 
 for(TV tv:tvs) { /향상된for문 tvs 배열 안에 있는 요소만큼 반복함(4)
 	tv.끄기(); //모든 티비 다 끌 수 있음
 }

TV[] tvs = new TV[4];는 TV가 4개 생긴거 아님.티비 리모콘 담은 변수 (예:aTv1) 4개 담은거임.

형변환


자동차 a자동차=new 페라리();
페라리 a페라리=a자동차;

class 자동차{}
class 페라리 extends 자동차{}

이거 자동형변환 안해줌

자동차 a자동차=new 스파크();
페라리 a페라리=a자동차;

class 자동차{}
class 페라리 extends 자동차{}
class 스파크 extends 자동차{}

이럴 때 페라리의 리모콘은 스파크랑 연결된다.
자바 컴파일러는 new 페라리(),new 스파크()보지도 않음.

페라리 a페라리=a자동차;
a자동차 "자동차 가리키는 리모콘있음 그거 복사해줄테니 같이 같은거 가르키자"
a페라리 "나 페라리랑만 연결될 수 있는데 너가 가리키는 자동차가 페라리가 맞아?"
그럴수도있고 아닐수도 있음. => 안전하지 않음 => 자동형변환 안해줌
수동형변환 해야함.근데 개발자가 안전하다고 판단한 경우에만 수동형변환을 해야함.
페라리 a페라리=(스파크)a자동차;

profile
BE -JAVA,Spring boot

0개의 댓글