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 |
Tags
- sql
- 생성자
- 가상컴퓨팅
- generic class
- 자료구조
- 크루스칼
- jsp
- 클라우드 컴퓨팅
- Java
- Algorithm
- javascript
- cloud computing
- 암호학
- JDBC
- 공개키 암호화
- 코딩테스트
- spring
- Queue
- 코테
- DB
- 알고리즘
- dfs
- JPA
- data structure
- dbms
- BFS
- 자바의정석
- python
- MVC
- Stack
Archives
- Today
- Total
PLOD
[Java] 추상 클래스(Abstract class) , 메서드(Method) 본문
메서드 사용의 장점
1. 코드 재사용: 메서드는 특정 기능을 캡슐화하므로, 필요할 때마다 그 기능을 다시 작성할 필요 없이 해당 메서드를 호출함으로써 코드를 재사용할 수 있다.
2. 코드의 가독성: 이름이 부여된 메서드는 코드가 수행하는 작업을 명확하게 나타내므로, 코드를 읽는 사람에게 추 가적인 문맥을 제공한다.
3. 모듈성: 큰 프로그램을 작은, 관리 가능한 부분으로 나눌 수 있다. 이는 코드의 가독성을 향상시키고 디버깅을 쉽 게 만든다.
4. 코드 유지 관리: 메서드를 사용하면, 코드의 특정 부분에서 문제가 발생하거나 업데이트가 필요한 경우 해당 메서 드만 수정하면 된다. 이렇게 하면 전체 코드 베이스에 영향을 주지 않고 변경 사항을 적용할 수 있다.
5. 재사용성과 확장성: 잘 설계된 메서드는 다른 프로그램이나 프로젝트에서도 재사용할 수 있으며, 새로운 기능을 추가하거나 기존 기능을 확장하는 데 유용하다.
6. 추상화: 메서드를 사용하는 곳에서는 메서드의 구현을 몰라도 된다. 프로그램의 다른 부분에서는 복잡한 내부 작 업에 대해 알 필요 없이 메서드를 사용할 수 있다.
7. 테스트와 디버깅 용이성: 개별 메서드는 독립적으로 테스트하고 디버그할 수 있다. 이는 코드의 문제를 신속하게 찾고 수정하는 데 도움이 된다.
추상메서드의 의미
"추상" 사전적 의미로 "여러가지 사물이나 개념에 공통되는 특성이나 속성따위를 추출하여 파악하는 작용"이라는 의미이다.
추상화 : 클래스간의 공통점을 찾아내서 공통의 부모를 설계하는 작업
구체화 : 상속을 통해 클래스를 설계, 확장하는 작업
여러 객체에 공통되는 사항을 추출하여 부모 클래스에 선언 및 구현을 하고 자식 클래스에는 특징을 구현하여 기능을 확장한다. 이 내용만 보면 상속의 개념과 동일하게 보일 것이다.
추상클래스의 장점은 부모클래스에서 공통 부분을 구현과 설계가 완료되면 자식 클래스에서 상속받아 기능
을 확장 할 때 편리하다. 자식 클래스에서 추상 메서드를 반드시 구현하도록 강요하여 이는 프로그램의 표준화 정도를
높히고 공통사항이 부모클래스에 관리되어 개발 및 유지보수에 용이하다
1. vehicle
package test04;
//부모 클래스
abstract class vehicle {
int vehicleNum = 0;
int money;
String vehicleName;
public vehicle(int vehicleNum, int money, String vehicleName) {
super();
this.vehicleNum = vehicleNum;
this.money = money;
this.vehicleName = vehicleName;
}
public void board() {
System.out.println("탑승하다");
}
abstract void pay();
abstract void move();
abstract void vehicleInfo();
}
2. texi
package test04;
// vehicle 자식클래스
public class texi extends vehicle{
public texi(int vehicleNum, int money, String vehicleName) {
super(vehicleNum, money, vehicleName);
// TODO Auto-generated constructor stub
}
@Override
void pay() {
System.out.println(money + "원이 필요합니다");
}
@Override
void move() {
System.out.println(vehicleNum+ "번" + vehicleName +"가 움직입니다.");
}
@Override
void vehicleInfo() {
System.out.println("차량번호 : " + vehicleNum);
System.out.println("차종 : " + vehicleName);
System.out.println("요금 : " + money);
}
}
3. bus
package test04;
//vehicle 자식클래스
public class bus extends vehicle{
public bus(int vehicleNum, int money, String vehicleName) {
super(vehicleNum, money, vehicleName);
// TODO Auto-generated constructor stub
}
@Override
void pay() {
System.out.println(money + "원이 필요합니다");
}
@Override
void move() {
System.out.println(vehicleNum+ "번" + vehicleName +"가 움직입니다.");
}
@Override
void vehicleInfo() {
System.out.println("차량번호 : " + vehicleNum);
System.out.println("차종 : " + vehicleName);
System.out.println("요금 : " + money);
}
}
4. test(main class)
package test04;
public class vehicleTest {
public static void main(String[] args) {
vehicle texi01 = new texi(100, 1000, "택시");
vehicle bus01 = new bus(200, 1500, "버스");
texi texi02 = new texi(101, 1200, "모범택시");
bus bus02 = new bus(201, 2000, "리무진");
texi01.pay();
texi02.pay();
bus01.pay();
bus02.pay();
texi01.move();
texi02.move();
bus01.move();
bus02.move();
texi01.vehicleInfo();
texi02.vehicleInfo();
bus01.vehicleInfo();
bus02.vehicleInfo();
}
}
5. result
더보기
1000원이 필요합니다
1200원이 필요합니다
1500원이 필요합니다
2000원이 필요합니다
100번택시가 움직입니다.
101번모범택시가 움직입니다.
200번버스가 움직입니다.
201번리무진가 움직입니다.
차량번호 : 100
차종 : 택시
요금 : 1000
차량번호 : 101
차종 : 모범택시
요금 : 1200
차량번호 : 200
차종 : 버스
요금 : 1500
차량번호 : 201
차종 : 리무진
요금 : 2000
'개발 공부 > Java' 카테고리의 다른 글
[Java]상속(Inheritance) (0) | 2022.11.11 |
---|---|
[Java] 자바 용어 정리 및 원리 (0) | 2022.11.11 |
[Java] 참조 자료형 (0) | 2022.11.08 |
[Java] 메서드 오버로딩(overloading), 오버라이딩(overriding) (0) | 2022.08.16 |
자바(JAVA) 랜덤(Random)값 사용 하기 (0) | 2022.07.30 |
Comments