Small Grey Outline Pointer Java :: 추상클래스 & 인터페이스
본문 바로가기
Dev./java

Java :: 추상클래스 & 인터페이스

by sso. 2022. 7. 3.

추상 클래스 (불완전한 클래스)
추상적인 내용만 정의하고 있는 클래스로, 구체적인 내용은 하위 클래스에서 구현되도록 해놓은 클래스
추상클래스(부모)는 클래스들의(자식) 공통요소들을 가상화 시켜놓는다
객체화는 가능하나 잘 사용하지 않는다 (목적에 어긋난다)
부모 추상 클래스의 역할은 단지 자식 클래스를 만들때 도와주는 역할을 수행하기 위해 존재한다(다형성)
자식클래스에서 사용할 메서드의 이름만 갖고 있다(미구현 상태) 
즉, {} 바디를 갖지 않는다 그 메서드를 추상 메서드라고 하며, abstract 키워드가 앞에 붙는다
일반 메서드도 선언 가능하다

abstract 추상클래스명 {
     abstract 리턴타입 추상메서드 (매개변수,...);
}

 

package day21;

public abstract class Shape {
	double area;
	
	public abstract void draw(double w, double h);
	final static void function() {
		System.out.println("추상 클래스의 일반 메서드 입니다");
	}
	
}

class Rect extends Shape{
	@Override
	public void draw(double w, double h) {
		System.out.println("직사각형 점 4개 연결");
		area=w*h;
		System.out.println("넓이: "+area);
		
	}
}

class Tri extends Shape{

	@Override
	public void draw(double w, double h) {
		System.out.println("삼각형 점 3개 연결");
		area=(w*h)/2;
		System.out.println("넓이: " +area);
	}
}

 

 

 

 

package day21;

public class Board {
	public static void main(String[] args) {
		new Rect().draw(10, 50);
		new Tri().draw(30, 5.6);
		Shape.function(); //클래스로 직접 접근
	}
}

직사각형 점 4개 연결
넓이: 500.0
삼각형 점 3개 연결
넓이: 84.0
추상 클래스의 일반 메서드 입니다

 

 

 

 


 


Marker Interface
-웹개발, 안드로이드에 많이 쓰인다

클래스들의 공통 그룹명으로 인터페이스를 생성하고 아무것도 구현해놓지 않는다
즉, 그 클래스들이 같은 그룹으로 묶였다는 표시를 하기 위해 사용한다

package marker;

public interface Animation {

}

 

 

 


package marker;

public class Digimon implements Animation{

	
}

 

 

package marker;

public class Pokemon implements Animation {

}

 

 

package marker;

public class ZzangGu implements Animation{

}

 

 

package marker;

public class HarryPotter {

}

 

 

 

 

package marker;

public class Check {
	public static void main(String[] args) {
		Digimon d = new Digimon();
		Pokemon p = new Pokemon();
		ZzangGu z = new ZzangGu();
		HarryPotter h = new HarryPotter();
		
		if(d instanceof Animation) {
			System.out.println("디지몬은 애니메이션 입니다.");
		}
		if(p instanceof Animation) {
			System.out.println("포켓몬은 애니메이션 입니다.");
		}
		if(z instanceof Animation) {
			System.out.println("짱구는 애니메이션 입니다.");
		}
		if(!(h instanceof Animation)) {
			System.out.println("해리포터는 애니메이션이 아닙니다.");
		}

	}
} 

디지몬은 애니메이션 입니다.
포켓몬은 애니메이션 입니다.
짱구는 애니메이션 입니다.
해리포터는 애니메이션이 아닙니다.

728x90

'Dev. > java' 카테고리의 다른 글

Java :: 내부클래스 (inner class)  (0) 2022.07.16
Java :: 인터페이스  (0) 2022.07.03
[Java] TMS 대중교통 터미널 시스템 만들기  (0) 2022.06.17
Java 추상 클래스  (0) 2022.06.12
Java :: 다형성/ 싱글턴 패턴  (0) 2022.06.12

댓글