반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

java.Overriding(메서드 오버라이딩) 본문

[IT]/java

java.Overriding(메서드 오버라이딩)

givemebro 2021. 3. 2. 11:49
반응형

Overriding(메서드 오버라이딩) : 부모 메서드를 자신에 맞게 재정의

>문법 : 접근제어자는 더 좁아지면 안 되고 리턴파입 매개변수 매서드명은 동일

> 사용자, user, client code에서는 부모클래스 또는 상위 인터페이스만 알면 세부 구현 메서드를 보지 않아도 사용이 가능
> user 편의성 증대
> 구현부가 변경되어도 소통부는 변화되지 않음으로 유지보수성 증대

// before Overriding

package step4;

class Animai {
	public void sleep() {
		System.out.println("자다");
	}
	public void eat() {
		System.out.println("먹다");
	}
}

class Person extends Animai {
	
}

public class TestOverriding1 {
	public static void main(String[] args) {
		Person p = new Person();
		p.sleep();
		p.eat();
	}
}

/*
자다
먹다
*/

 

//Overriding

package step4;

class Animai {
	public void sleep() {
		System.out.println("자다");
	}
	public void eat() {
		System.out.println("먹다");
	}
}

class Person extends Animai {
	// 메서드 오버라이딩 : 부모 메서드를 자신에 맞게 재정의해서 사용
	// 문법 : 접근제어자는 더 좁아지면 안 되고 리턴파입 매개변수 매서드명은 동일
	public void eat() {
		System.out.println("사람이 숟가락을 이용해 먹다");
	}
}

public class TestOverriding1 {
	public static void main(String[] args) {
		Person p = new Person();
		p.sleep();
		p.eat();
	}
}

/*
자다
사람이 숟가락을 이용해 먹다
*/

 

 


예제 2

package step5;

public class Employee {
	private String empNo;
	private String name;
	private int salary;
	public Employee(String empNo, String name, int salary) {
		super();
		this.empNo = empNo;
		this.name = name;
		this.salary = salary;
	}
	public String getEmpNo() {
		return empNo;
	}
	public void setEmpNo(String empNo) {
		this.empNo = empNo;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getSalary() {
		return salary;
	}
	public void setSalary(int salary) {
		this.salary = salary;
	}
	public String getDetails() {
		return "empNo: "+empNo+"  name: "+name+"  salary: "+salary;
	}
}

 

package step5;

public class Engineer extends Employee {
	private String skill;

	public Engineer(String empNo, String name, int salary, String skill) {
		super(empNo, name, salary);
		this.skill = skill;
	}

	public String getSkill() {
		return skill;
	}

	public void setSkill(String skill) {
		this.skill = skill;
	}
	// 메서드 오버라이딩 : 부모 메서드를 자신에 맞게 재정의
	public String getDetails() {
		return super.getDetails()+"  skill: "+skill;
	}
}

 

package step5;

public class Manager extends Employee {
	private String department;

	public Manager(String empNo, String name, int salary, String department) {
		super(empNo, name, salary);
		this.department = department;
	}

	public String getDepartment() {
		return department;
	}

	public void setDepartment(String department) {
		this.department = department;
	}

	public String getDetails() {
		return super.getDetails()+"  department: "+department;
	}
}

 

package step5;

public class TestOverriding2 {
	public static void main(String[] args) {
		Employee e = new Employee("123","아이유",300);
		System.out.println(e.getDetails());
		
		Engineer en = new Engineer("124","박보검",400,"java");
		System.out.println(en.getDetails());
		
		Manager m = new Manager("125","이효리",500,"영업부");
		System.out.println(m.getDetails());
	}
}

/*
empNo: 123  name: 아이유  salary: 300
empNo: 124  name: 박보검  salary: 400  skill: java
empNo: 125  name: 이효리  salary: 500  department: 영업부
*/

 

반응형

'[IT] > java' 카테고리의 다른 글

java.Polymorphism(다형성)  (0) 2021.03.02
java.annotation(어노테이션)  (0) 2021.03.02
java.overriding.toString  (0) 2021.03.02
java.Object(오브젝트 클래스)  (0) 2021.03.02
java.분석 설계  (0) 2021.03.02
java.super/this  (0) 2021.02.26
java.Access Modifier(접근 제어자)  (0) 2021.02.26
java.Inheritance(상속)  (0) 2021.02.26
Comments