본문 바로가기

패스트캠퍼스 환급 챌린지

[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {14} 회차 미션

1. 다운 캐스팅과 instanceof

 

instanceof란?

 

 - 객체 타입을 확인하는데 사용한다. 속성은 이항연산자이고 형변환 가능여부를 가능하면 true 불가능하면 false로 리턴해준다.

   주로 상속 관계에서 부모객체인지 자식객체인지 확인하는데 사용한다.

 

※ 주의할점  ( 뒤에 나오는 예제를 통해 확인 할 수 있다. )

  // 주의할점은 조건문의 순서는 가장 최하위 클래스 부터 작성해야한다.
  // 그이유는 최상위 클래스를 맨위에 적어버린다면 첫번째 조건문에서 true를 만족하기때문에 첫번째 조건만을 수행한다.

/**
 * instanceof : 객체 타입을 확인하는데 사용한다. 속성은 이항연산자이고 형변환 가능여부를 가능하면 true 불가능하면 false로 리턴해준다. 
 * 				주로 상속 관계에서 부모객체인지 자식객체인지 확인하는데 사용한다.
 */
public class InstanceofExam {
	public static void main(String[] args) {
		
		A a = new A();
		B b = new B();
		
		
		//객체 a는 자기 자신의 객체이기 때문에 형변환 가능.
		System.out.println(a instanceof A);  //true 출력
		
		//객체 b는 A의 자식객체이기 때문에 A로 형변환 가능.
		System.out.println(b instanceof A);  //true 출력
		
		
		//객체 a는 B의 부모객체이기때문에 형변환 불가능.
		System.out.println(a instanceof B);  //false 출력
		
		//객체 b는 자기 자신의 객체이기때문에 형변환 가능.
		System.out.println(b instanceof B);  //true 출력
		
	} // end of main 
} // end of class


class A{
	
}

class B extends A{
	
}


출처: https://zzdd1558.tistory.com/124 [윤들윤들]

출처: https://zzdd1558.tistory.com/124

 

Java instanceof란?

instanceof란?  - 객체 타입을 확인하는데 사용한다. 속성은 이항연산자이고 형변환 가능여부를 가능하면 true 불가능하면 false로 리턴해준다.   주로 상속 관계에서 부모객체인지 자식객체인지 확

zzdd1558.tistory.com

Chapter 08. 추상 클래스란?

 

 

 

[JAVA] 자바 추상클래스란?

추상클래스 이 글 하나로 박살내자.

추상클래스의 문법적인 특징이나, 객체생성이 되고 안되고 이런 특징들이 중요한게 아닙니다.

도대체 추상클래스가 무엇이고 왜 사용하는지 본질적인 개념부터 알아야 연쇄적으로 자연스럽게 추상클래스를 이해할 수 있습니다. 

왜냐면, 추상클래스의 본질을 이해하는 순간! 문법적인 부분은 외우지 않아도 추상클래스 철학에 맞게 녹아져 있거든요....

 

2. 추상클래스 왜 사용할까?? (추상클래스 용도 : 제일 중요)

그럼 추상클래스를 왜사용할까??? 크게 3가지가 있다. 각각 내용을 알아보자!!

1. 공통된 필드와 메서드를 통일할 목적

10명 개발자에게 자동차를 상속받아 각자만의 실체클래스를 구현하라고 주문해보자.

10명 개발자가 생각한 변수명과 메서드명은 제각기 다른 이름을 가지고 구현될 것이다. 이렇게 구현이 되면 문제가 있다. 만약, 수만줄에 이르는 코드에 A라는 자동차 실체클래스 객체를 선언하고 해당 객체의 필드와 메서드를 떡칠했다고 치자. 헌데, A자동차가 계약만료되고, B자동차를 새로 교체해야한다고 하자....응?

 

느낌이 오는가? 만약 B자동차의 변수와 메서드명이 A자동차와 동일하면 객체 인스턴스만 변경하면 되는데, 필드와 메서드를 전부다 체크해서 변경해줘야한다. 유지보수는 개뿔 이건 아예 새로 개발하는 느낌일 것이다. 따라서 추상클래스를 만든다! 즉, 추상클래스에서 미리 정의한 필드와 메서드가 있다면, 실체클래스는 추상클래스의 필드와 메서드명을 변경할 수 없고 무조건 해당 명명으로 구현해야한다. 따라서, 필드와 메서드 이름을 통일하여 유지보수성을 높이고 통일성을 유지할 수 있다.

 

2. 실체클래스 구현시, 시간절약

자자 실무적으로 생각해보자! 나는 SI개발자이다. 헌데 시간이 겁나 없다 빨리 개발해야하는데.. 갑자기 나보고 자동차라는 어마무시한 클래스를 일주일 안에 구현하라고한다. 그럼 설계부터 생각한다. 음..자동차는 바퀴가 있어야하고, 굴러가야하고 아 맞어 백미러도 있어야하고...트렁크도 있어야하고 ...응?

 

느낌이 오는가? 여기서 추상클래스는 효과를 발휘한다. 내가 자동차를 구현해야하는데, 자동차 추상클래스를 상속받으면, 자연스럽게 자동차에 공통적으로 들어가야하는 필드와 메서드가 녹여져있는 필드와 메서드가 똭 하고 오버라이딩 된다. 즉, 강제로 주어지는 필드와 메서드를 가지고 나만의 스타일대로 구현만 하면 된다. 설계 시간이 절약된다..구현하는데만 집중할 수 있다!!

 

그럼 여기서 잠깐! 그런 추상클래스는 결국 누군가 설계해야하는데 누가하나요? 결국 시간절약이 안되는거 아니에요? 보통 당신이 취업하면 바로 그런일을 안한다. 그럼 누가할까? 그런 설계적인 일만 하라고 있는 고급개발자?가 있다. 바로 AA!! 어플리케이션 아키텍쳐(application architecture)가 멋지게 설계해줄거다. ㅎㅎ 그러니 우리는 일단! 추상클래스가 어떤건지 알고, 이를 상속받아서 멋지게 구현하면 된다는 사실을 기억하자.

 

3. 규격에 맞는 실체클래스 구현

2.실체클래스 구현시, 시간절약과 비슷할 수도 있는 내용이다. 하지만 따로 분류해서 설명해야할 것 같아서 굳이 규격에 맞는 실체클래스 구현이라고 했다. 이미 설명했지만, 아무리 자기 스타일대로 클래스를 구현한다고 해도 그것도 결국엔 규격안에서 구현하는 것을 허락한다는 것이지, 규격도 없이 아무렇게나 구현을 해서는 안된다. 왜냐...혼자서 개발하는 일이 아니다. 모두가 약속한 필드와 메서드 그리고 설계 규칙에 녹아져있는 규격에 맞는 클래스를 구현해야한다. 그래야 코드 수정시, 영향도를 적게 가져가면서 유지보수성을 높일 수 있다. 따라서 선임 설계개발자가 와꾸(?)를 잡아주고, 해당 규격에 맞게 클래스를 구현하면 된다. 

출처: limkydev.tistory.com/188

 

[JAVA] 자바 추상클래스란?

[JAVA] 자바 추상클래스란? 추상클래스 이 글 하나로 박살내자. 추상클래스의 문법적인 특징이나, 객체생성이 되고 안되고 이런 특징들이 중요한게 아닙니다. 도대체 추상클래스가 무엇이고 왜

limkydev.tistory.com

 

 

올인원 패키지 : JAVA 웹 개발 마스터👉https://bit.ly/35aoeAW