18일차 upcasting & 싱글톤패턴
upcasting
부모 클래스 타입으로 자식 생성자를 호출하는 것.
부모와 자식간의 공통요소(재정의 메서드)만 사용 가능하며,
자식 클래스의 추가된 것들은 사용할 수 없다.
부모 타입으로 선언되었기 때문에 부모의 필드만
사용 가능하지만 자식 클래스에 재정의 했다면,
재정의 된 메서드로 사용된다.
부모클래스명 객체 = new 자식생성자();
down casting
자식 클래스 타입으로 부모 생성자를 호출하는 오류
부모의 범위가 더 크기 때문에 자식에 담을 수 없다.
- 각각의 타입을 확인할 때 사용하는 문법
- 조건식 참/거짓
값 instanceof 클래스타입 : 값이 클래스 타입이니?
(실습 예제)
class Car{
String brand;
String color;
int price;
public Car() {}
public Car(String brand, String color, int price) {
this.brand = brand;
this.color = color;
this.price = price;
}
void engineStart() {
System.out.println("열쇠로 시동 킴");
}
void engineStop() {
System.out.println("열쇠로 시동 끔");
}
}
class SuperCar extends Car{
String mode;
public SuperCar() {}
public SuperCar(String brand, String color, int price, String mode) {
super(brand, color, price);
this.mode = mode;
}
void changeMode(String newMode) {
this.mode = newMode;
System.out.println("모드가 바뀌었습니다.");
}
@Override
void engineStart() {
System.out.println("음성으로 시동 킴");
}
@Override
void engineStop() {
System.out.println("음성으로 시동 끔");
}
}
public class CastingTest {
public static void main(String[] args) {
//up casting 자식 생성자 불러오는 것 자식클래스에서 새로만든것(mode)를 사용할수는 없으나,
//부모클래스에서 있던걸 재정의하니까 되는구나~!
Car noOptionFerrari = new SuperCar();
// noOptionFerrari.engineStart();
// //down casting : 오류다!
// SuperCar brokenCar = (SuperCar) new Car();
// //값앞에다 자료형 붙여서 강제형변환
// brokenCar.changeMode("스포츠");
// //응안됨
Car car = new Car();
SuperCar ferrari = new SuperCar();
if(car instanceof Car) {
System.out.println("nice casting");
}else {
System.out.println("err : wrong casting");
}
if(ferrari instanceof Car) {
System.out.println("nice castig");
}else {
System.out.println("err : wrong casting");
}
if(car instanceof SuperCar) {
System.out.println("nice casting");
}else {
System.out.println("err : wrong casting");
}//자동차를 수퍼카에 담을수가 없어서!범위를 벗어났기때문에
if(noOptionFerrari instanceof Car) {
System.out.println("nice casting");
}else {System.out.println("err : wrong casting");
//내가 업캐스팅해도 타입만 맞으면 그 자동차 타입
}
}}
싱글톤 패턴(Singleton Pattern)
객체가 단 1개만 존재할 때 외부에서 new를 하지 못하게
막아주고 클래스 내부에서 new를 한 후 외부에서 선언이 아닌
사용만 해준다.
Author And Source
이 문제에 관하여(18일차 upcasting & 싱글톤패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jamiview/18일차-upcasting-싱글톤패턴저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)