实例需求:实现一个名为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继承实例相关推荐

  1. java实验报告4继承与多态_Java继承与多态实验报告

    西 西 安 安 邮 邮 电 大 学 (计算机学院) 课内实验报告 实验名称: : 态 继承与多态 ﻩ ﻩ 专业名称: 计算机科学与技术 班 班 级: 计科 1405 班 学生姓名: 高宏伟 学 学 号 ...

  2. java继承的性质_java 继承的特性

    java的三大特性之一-----继承 继承的特性: 1.提高了代码的复用性----代码的简洁 2.让类与类之间产生了关系.有了这个关系,才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码 ...

  3. java继承对象转换_java 继承的基础(转)

    java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...

  4. java继承与多态_Java继承与多态

    感慨一下,到了现在感觉Java里面很多东西都是模模糊糊,不能这样了,一点点解决吧.今天看了继承与多态的一些内容,感觉看得很浅,先写下来,算是巩固,如果后面看到更好的内容,再慢慢加上去. 继承与多态,他 ...

  5. java继承的作用_Java继承概述以及Java继承案例和继承的好处

    Java继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可. 2.在Java中通过extends关键字可以实现类与类的 ...

  6. java的继承和访问_Java 继承和访问控制

    类的继承 Java中使用extends来实现继承 通过继承,子类自动拥有了基类(supercalss)的所有成员. Java只支持单继承,一个子类只允许有一个基类,一个基类可以有多个子类. class ...

  7. java 继承 私有变量_java – 继承和私有变量

    在HourlyEmployee和SalariedEmployee子类中,我们调用super()将"name"传递给基类构造函数.我有两个问题: >变量名称来自哪里,这是aNa ...

  8. java继承与多态性_Java继承与多态浅析

    一.继承 1.通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类.继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两     ...

  9. java编程的例子_java编程实例

    1:编写程序,判断给定的某个年份是否是闰年. 闰年的判断规则如下:(1)若某个年份能被4整除但不能被100整除,则是闰年.(2)若某个年份能被400整除,则也是闰年. import java.util ...

最新文章

  1. C#Hello World
  2. ios 裁剪框大小_iOS实现裁剪框和图片剪裁功能
  3. java画笔覆盖在界面_Java学习笔记:swing画笔工具Graphics,刷新页面,键盘事件,随机数等【诗书画唱】...
  4. 启动页面和各设备的宽高比及像素
  5. 兼容各种浏览器的自动左右滚动兼左右点击滚动代码
  6. (亲测)vue-cli项目添加骨架屏多种方式,自动生成骨架屏
  7. 公募FOF同质化产品情况引人关注
  8. 文本情感分类python_文本情感分类(一):传统模型
  9. 安卓模拟ibeacon_android iBeacon开发模拟实例
  10. 移动硬盘上安装Ubuntu18.04系统
  11. 机器学习中的奥卡姆剃刀定律
  12. pvid与access的关系_浅谈PVID和VID区别
  13. 如何在D盘以管理员身份,运行cmd
  14. 通达OA工作流插件--保存OA流程中的所有附件+流程表单到指定目录(2013adv,2015,2016)
  15. jsoup模拟登陆合肥工业大学信息门户
  16. java学习---类与对象
  17. 前端岗位一般的任职要求
  18. web程序无法访问:The requested resource () is not available.错误
  19. html代码中的nofollow属性
  20. chatgpt 镜像版

热门文章

  1. 为什么学好计算机就必须学好汇编?
  2. 网络工程师交换试验手册之十八:SWITCH的基本配置
  3. 阿里云CentOS6.3 安装MongoDB教程
  4. 全国计算机二级vb得分技巧,全国计算机等级考试二级VB笔试各题型答题技巧(2)...
  5. linux测试dvi接口,液晶显示器DVI接口及测试规范.pdf
  6. yum源查看mysql_获取MySQL各版本yum源 并安装
  7. oracle输出xml文件格式,在oracle中通过字段信息生成xml文件
  8. c语言定义数组变量初始化为0,c语言数组初始化——int a[N] = {0};
  9. ExcelPro《EXCEL图表之道-如…
  10. linux 关机时卸载sd,Linux下U盘SD卡的自动挂载和卸载