更新時間:2019-09-18 10:20:52 來源:動力節點 瀏覽2521次
今天動力節點java培訓機構小編為大家分享java繼承的實例,希望通過此文大家對java繼承能夠有更深的理解,下面就隨小編一起來了解一下java繼承的實例。
實例需求:實現一個名為Person的類和它的子類Employee,Manager是Employee的子類,設計一 個類Add()用于漲工資,普通員工一次能漲10%,經理能漲20%。
具體要求如下:
(1)Person類中的屬性有:姓名name String(類型),地址address(String類型),定義該類的構造方法;
(2)Employee 類中的屬性有:工號ID(String類型),工資wage(double類型),工齡(int 型),定義該類的構造方法;
(3)Manager類中的屬性有:級別level(String類型)定義該類的構造方法;
(4)編寫一個測試類,產生一個員工和一個經理,給該員工和經理漲工資。
1、利用繼承的特性
當子類沒有相應的成員方法時,調用父類的同名方法。
Person.java
package person_employee;
public class Person {
private String name = "";
private String address = "";
//定義構造方法
public Person(String name, String address){
this.name = name;
this.address = address;
}
}
Employee.java
package person_employee;
// 繼承Person類
public class Employee extends Person {
private String ID = "";
private double wage = 0;
private int age = 0;
public Employee(String name, String address, String ID, double wage, int age){
super(name, address); //調用父類的構造方法
this.ID = ID;
this.wage = wage;
this.age = age;
}
public double add(String position){// 判斷職位
if(position == "0"){
wage = wage*1.2;
}
else{
wage = wage*1.1;
}
return wage;
}
//設置get/set方法
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
}
Manager.java
package person_employee;
//繼承Employee類
public class Manager extends Employee{
private String level = ""; //1為普通員工,0為經理
public Manager(String name, String address, String ID, double wage, int age, String level){
super(name, address, ID, wage, age);
this.level = level;
}
//設置get/set方法
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
Test.java
package person_employee;
public class Test {
public static void main(String[] args) {
// 新建對象
Manager normal = new Manager("wsl", "jit", "12", 1000, 2, "1");
Manager manager = new Manager("ctl", "jitt", "123", 10000, 10, "0");
// 傳入職位,Manager類型的對象沒有add()方法,所以自動搜尋其父類,調用add()方法
normal.add(normal.getLevel());
manager.add(manager.getLevel());
System.out.println("normal wage is:"+normal.getWage());
System.out.println("manager wage is:"+manager.getWage());
}
}
打印結果:
2、定義抽象類
定義抽象類,在子類中實現不同的抽象方法。
Person.java
package person_employee;
public class Person {
private String name = "";
private String address = "";
//定義構造方法
public Person(String name, String address){
this.name = name;
this.address = address;
}
}
Employee.java
package person_employee;
public abstract class Employee extends Person {
private String ID = "";
private double wage = 0;
private int age = 0;
public Employee(String name, String address, String ID, double wage, int age){
super(name, address);
this.ID = ID;
this.wage = wage;
this.age = age;
}
//定義抽象方法
public abstract void add(String position);
//設置get/set方法
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
}
Manager.java
package person_employee;
public class Manager extends Employee{
private String level = "";
public Manager(String name, String address, String ID, double wage, int age, String level){
super(name, address, ID, wage, age);
this.level = level;
}
//實現抽象方法
public void add(String position){
double wage = super.getWage();
if(position == "0"){
super.setWage(wage*1.2);
}
else{
super.setWage(wage*1.1);;
}
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
Test.java
package person_employee;
public class Test {
public static void main(String[] args) {
Manager normal = new Manager("wsl", "jit", "12", 1000, 2, "1");
Manager manager = new Manager("ctl", "jitt", "123", 10000, 10, "0");
normal.add(normal.getLevel());
manager.add(manager.getLevel());
System.out.println("normal wage is:"+normal.getWage());
System.out.println("manager wage is:"+manager.getWage());
}
}
打印結果:
3、在2的基礎上利用多態實現方法的重載
Manager.java
package person_employee;
public class Manager extends Employee{
private String level = "";
public Manager(String name, String address, String ID, double wage, int age, String level){
super(name, address, ID, wage, age);
this.level = level;
}
//實現抽象方法
public void add(){
double wage = super.getWage();
super.setWage(wage*1.1);
}
public void add(String position){
double wage = super.getWage();
super.setWage(wage*1.2);
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
Test.java
package person_employee;
public class Test {
public static void main(String[] args) {
Manager normal = new Manager("wsl", "jit", "12", 1000, 2, "1");
Manager manager = new Manager("ctl", "jitt", "123", 10000, 10, "0");
normal.add();
manager.add(manager.getLevel());
System.out.println("normal wage is:"+normal.getWage());
System.out.println("manager wage is:"+manager.getWage());
}
}
打印結果:
以上就是動力節點java培訓機構小編分享的“java繼承的實例”,希望對大家有幫助,更多java最新資訊請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。
相關免費視頻教程推薦
java開發基礎教程下載——編寫繼承代碼:http://www.dabaquan.cn/xiazai/2615.html
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習