250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 참조변수
- JSON
- objecterror
- HttpServletResponse
- 테스트코드
- 코딩테스트
- DI
- 스프링
- 코드트리조별과제
- html form
- 싱글톤
- 오버라이딩
- 스프링컨테이너
- java
- @configuration
- 다형성
- 티스토리챌린지
- 코드트리
- 서블릿
- 김영한
- fielderror
- 백준
- equals()
- 프록시
- ocp
- 오블완
- http 메시지 컨버터
- 인터페이스
- 의존관계
- 추상클래스
Archives
- Today
- Total
minOS
자바의 정석 ch7-33 추상 클래스의 작성 1 본문
728x90
ch7-33 추상 클래스의 작성 1
- 여러 클래스에 공통적으로 사용될 수 있는 추상 클래스를 바로 작성하거나
기존 클래스의 공통 부분을 봅아서 추상 클래스를 만든다 -> 코드의 중복 제거
class Marine{ int x,y; void move(int x, int y){/* 지정된 위치로이동 */} void stop(){/* 현재 위치에 정지 */} void stimPack(){/* 스팀팩을 사용한다 */} } class Tank{ int x,y; void move(int x, int y){/* 지정된 위치로이동 */} void stop(){/* 현재 위치에 정지 */} void changeMode(){/* 공격 모드를 변경한다 */} } class DropShip{ int x,y; void move(int x, int y){/* 지정된 위치로이동 */} void stop(){/* 현재 위치에 정지 */} void load(){/* 선택된 대상 태운다 */} void unload(){/* 선택된 대상 내린다 */} }
위 코드는 추상 클래스를 사용하여 코드의 중복을 아래와 같이 제거할 수 있다.abstract class Unit{ int x,y; abstract void move(int x, int y); void stop(){/* 현재 위치에서 정지*/} } class Marine extends Unit{ void move(int x, int y){/* 지정된 위치로이동 */} void stimPack(){/* 스팀팩을 사용한다 */} } class Tank extends Unit { void move(int x, int y){/* 지정된 위치로이동 */} void changeMode(){/* 공격 모드를 변경한다 */} } class DropShip extends Unit { void move(int x, int y){/* 지정된 위치로이동 */} void load(){/* 선택된 대상 태운다 */} void unload(){/* 선택된 대상 내린다 */} }
실습abstract class Unit{ int x,y; abstract void move(int x, int y); void stop(){/* 현재 위치에서 정지*/} } class Marine extends Unit{ void move(int x, int y){ System.out.println("Marine의 좌표: x= " +x +" y= "+y); } void stimPack(){/* 스팀팩을 사용한다 */} } class Tank extends Unit { void move(int x, int y){ System.out.println("Tank의 좌표: x= " +x +" y= "+y);} void changeMode(){/* 공격 모드를 변경한다 */} } class DropShip extends Unit { void move(int x, int y){ System.out.println("DropShip의 좌표: x= " +x +" y= "+y); } void load(){/* 선택된 대상 태운다 */} void unload(){/* 선택된 대상 내린다 */} } public class Main { public static void main(String[] args) { Unit [] group = {new Marine(),new Tank(),new DropShip()}; for (Unit unit : group) { unit.move(100, 200); } } }
출력
group 배열 그림으로 표현
728x90
'TIL > 남궁성의 자바의 정석' 카테고리의 다른 글
자바의 정석 ch7-35~37 인터페이스의 선언, 상속, 구현 (0) | 2024.01.02 |
---|---|
자바의 정석 ch7-34 추상 클래스의 작성 2 (0) | 2023.12.31 |
자바의 정석 ch7-31,32 추상 클래스,추상 메서드 (0) | 2023.12.29 |
자바의 정석 ch7-29,30 여러 종류의 객체를 배열로 다루기 (2) | 2023.12.28 |
자바의 정석 ch7-27,28 매개변수 다형성 (0) | 2023.12.25 |