Back-end

자바 상속

Hdeveloper 2022. 4. 18. 22:09
728x90

자바의 중요개념중 하나인 상속에대해서 다뤄보도록하겠다.

현실에서는 상속은 부모가 자식에게 물려주는 행위를 말한다. 자바 언어에서도 부모 클래스의 멤버를 자식 클래스에게 물려줄수 있다.

클래스 상속을 위한 기본틀은 다음과 같다.

class 자식클래스 extends 부모클래스{
//필드
//생성자
//메소드
}

다음으로는 상속을 적용하기 위한 예제코드이다.

패키지는 multi로 정하였고 각각의 클래스 조건은 다음과 같다.

1. 일반 사원

- 사번, 이름, 월급

- 연봉계산하기, 인센티브 주기

package multi;

public class Employee {
	private int num;
	private String name;
	private double salary;
	private double annsalary;
	private double incentive;
	private double incentivesum;
	public Employee() {
	}

	
	


	public Employee(int num, String name, double salary, double annsalary, double incentive, double incentivesum) {
		this.num = num;
		this.name = name;
		this.salary = salary;
		this.annsalary = annsalary;
		this.incentive = incentive;
		this.incentivesum = incentivesum;
	}





	public int getNum() {
		return num;
	}

	public String getName() {
		return name;
	}

	public double getSalary() {
		return salary;
	}
	
	public double getAnnsalary() {
		double sum=0.0;
		sum =salary*12;
		return sum;
	}


	public double getIncentive() {
		return incentive;
	}
	

	public double getIncentivesum() {
		return incentivesum;
	}

	@Override
	public String toString() {
		return "Employee [num=" + num + ", name=" + name + ", salary=" + salary + ", annsalary=" + annsalary
				+ ", incentive=" + incentive + ", incentivesum=" + incentivesum + "]";
	}
	
}

2. 비서

- 사번, 이름, 월급, 보스

- 연봉계산하기, 인센티브 주기

package multi;

public class Secretary extends Employee {
	private String boss;

	public Secretary() {
	}

	

	public Secretary(int num, String name, double salary, double annsalary, double incentive, double incentivesum, String boss) {
		super(num, name, salary, annsalary, incentive, incentivesum);
		this.boss = boss;
	}



	@Override
	public String toString() {
		return "Secretary [boss=" + boss + ", toString()=" + super.toString() + "]";
	}	
	
}

3. 영업

- 사번, 이름, 월급, 영업지역, 영업 목표, 달성 목표

- 연봉계산하기, 인센티브 주기

package multi;

public class Sales extends Employee {
	private String region;
	private double goal;
	private double result;
	public Sales() {
	}
	
	public Sales(int num, String name, double salary, double annsalary, double incentive, double incentivesum, String region, double goal, double result) {
		super(num, name, salary, annsalary, incentive, incentivesum);
		this.region=region;
		this.goal=goal;
		this.result=result;
	}



	public String getRegion() {
		return region;
	}
	public double getGoal() {
		return goal;
	}
	public double getResult() {
		return result;
	}



	@Override
	public String toString() {
		return "Sales [region=" + region + ", goal=" + goal + ", result=" + result + ", toString()=" + super.toString()
				+ "]";
	}
	
}

4. 관리자

- 사번, 이름, 월급, 보너스(%)

- 연봉계산하기, 인센티브 주기

package multi;

public class Manager extends Employee {
	private double bonus;

	public Manager() {
	}
	
	
	

	public Manager(int num, String name, double salary, double annsalary, double incentive, double incentivesum, double bonus) {
		super(num, name, salary, annsalary, incentive, incentivesum);
		this.bonus=bonus;
	}


	public double getBonus() {
		return bonus;
	}


	@Override
	public String toString() {
		return "Manager [bonus=" + bonus + ", toString()=" + super.toString() + "]";
	}
	
}

 

위에서 보듯이 다음과 같은 코드로 각각의 클래스를 Employee로 부터 상속을 받았음을 알 수 있다.

public class Manager extends Employee{
}

다음은 클래스의 속성을 넣어서 사원들의 개인 정보를 출력해놓은 화면이다.

다음으로는 위화면을 출력하기위한 소스코드이다.

package multi;

public class multiapp {

	public static void main(String[] args) {
		Employee e[]= new Employee[4];
		e[0]=new Employee(100,"lee",200,2400,6,2400*0.1);
		e[1]=new Secretary(101,"kim",180,180*12,6,2160*0.2,"baek");
		e[2]=new Sales(102,"seong",200,2400,6,2400*0.3,"seoul",100,100);
		e[3]=new Manager(103,"koo",300,3600,6,3600*0.4,200);
		//공통속성 Employee:사원번호, 이름,월급,연봉,인센티브주기,인센티브합계 인센티브비율10%
		// secretary: 사원번호, 이름,월급,연봉,인센티브주기,인센티브합계,보스이름 인센티브비율20%
		//Sales:사원번호, 이름,월급,연봉,인센티브주기,,인센티브합계,영업지역,영업목표,달성목표 인센티브비율30%
		//Manager:사원번호, 이름,월급,연봉,인센티브주기,인센티브합계,보너스 인센티브비율 40%
		
		for (int i = 0; i < e.length; i++) {
			System.out.println(e[i]);
		}
	}

}
728x90

'Back-end' 카테고리의 다른 글

자바 연산자  (0) 2022.04.25
자바 구구단 출력  (0) 2022.04.23
자바 변수,기본타입  (0) 2022.04.23
java scanner 클래스  (0) 2022.04.11
java계산기  (0) 2022.04.11