/*
abstract class 정의
- 상속 전용으로 객체를 만들 수 없다
- 추상 메소드는 함수의 정의만을 하고 하위 클래스에서 구현한다.
abstract class 클래스 이름
{
멤버변수
메소드
생성자
abstract 반환형 메소드이름(매개변수,...) //추상메소드 선언.
}
*/
abstract class Employee { //추상클래스로 선언
String name;
public abstract int income(); //바디가 없는 추상 메소드
public Employee(String n) //정상적으로 선언된 메소드
{
name = n;
}
public void getInformation()
{
System.out.println("이름 : "+name+", 봉급 : "+income()); //추상메소드 income() 사용.
}
}
--HourlyWorker.java
public class HourlyWorker extends Employee{
int pay_per_hour = 2000;
int work_hour = 8;
public HourlyWorker(String name)
{
super(name);
}
public int income() //슈퍼클래스의 추상메소드를 구현
{
return work_hour *pay_per_hour;
}
}
--MonthlyWorker
public class MonthlyWorker extends Employee{
int pay_per_hour = 2000;
int work_hour = 8;
int work_month = 1;
public MonthlyWorker(String name)
{
super(name);
}
public int income() //슈퍼클래스의 추상메소드를 구현
{
return (work_hour * pay_per_hour) * (work_month * 20);
}
}
--WeeklyWorker.java
public class WeeklyWorker extends Employee{
int pay_per_hour = 2000;
int work_hour = 8;
int work_week = 1;
public WeeklyWorker(String name)
{
super(name);
}
public int income() //슈퍼클래스의 추상메소드를 구현
{
return (work_hour * pay_per_hour) * (work_week * 5);
}
}
--AbstractTest.java
public class AbstractTest {
public static void main(String[] args) {
HourlyWorker employee1 = new HourlyWorker("백승민");
employee1.getInformation();
WeeklyWorker employee2 = new WeeklyWorker("서은석");
employee2.getInformation();
MonthlyWorker employee3 = new MonthlyWorker("임나영");
employee3.getInformation();
}
}
'JAVA 프로그래밍' 카테고리의 다른 글
Generic (0) | 2009.10.07 |
---|---|
내부 클래스 (0) | 2009.10.07 |
Interface(인터페이스) (0) | 2009.10.07 |
static 메소드 (0) | 2009.10.07 |
CallingThis (0) | 2009.10.07 |