Java的继承与多态

Java的继承与多态对于提高开发效率,减少开发量,是非常有帮助的,也便于代码维护。下面是根据书上讲的,我又做了改进的例子。

假设需求:

        公司需要对所有人员进行管理,所有人员分为普通员工和经理人,他们的头衔、工资、生日等信息都是不一样的,但是不能开发两套系统分别进行管理,而是要一套系统完成对所有人的管理。


设计一个员工类,这是父类,定义如下:

package com.myHelloWorld;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Employee {
	private String name;
	private double salary;
	private Date birthday;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public void setBirthday(String birthday) {
		SimpleDateFormat simleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		try {
			this.birthday = simleDateFormat.parse(birthday);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


这里首先实现了对所有人员进行管理的方法。对普通员工的管理,只要实例化若干个一个对象即可进行管理,但是对经理的管理,需求不同,因此,要创建子类,从这里继承:

package com.myHelloWorld;

public class Manager extends Employee{
	private double bonus;

	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return super.getName() + "经理";
	}

	public double getBonus() {
		return bonus;
	}

	public void setBonus(double bonus) {
		this.bonus = bonus;
	}
	
}


现在,只需要对它们进行分别管理就可以了,创建一个测试单元,如下:

package com.myHelloWorld;

import java.util.Date;

public class EmployeeTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Employee empolyee = new Employee();
		empolyee.setName("Java");
		empolyee.setSalary(1000);
		empolyee.setBirthday(new Date());
		
		Manager manager = new Manager();
		manager.setName("编程高手");
		manager.setSalary(3000);
		manager.setBirthday(new Date());
		manager.setBonus(2000);
		
		System.out.println("员工的姓名:" + empolyee.getName());
		System.out.println("员工的工资:" + empolyee.getSalary());
		System.out.println("员工的生日:" + empolyee.getBirthday());
		System.out.println("经理的姓名:" + manager.getName());
		System.out.println("经理的工资:" + manager.getSalary());
		System.out.println("经理的生日:" + manager.getBirthday());
		System.out.println("经理的奖金:" + manager.getBonus());
		
		empolyee.setBirthday("1980-10-12");
		manager.setBirthday("1970-01-23");
		
		System.out.println("更新员工的生日为:" + empolyee.getBirthday());
		System.out.println("更新经理的生日为:" + manager.getBirthday());
	}

}

分别对员工类和经理类进行实例化,也就是创建这么两个人,即可对他们的姓名、头衔、工资、生日等进行管理。

这是输出截图:



这就是继承,也包含了重写。


大家可能注意到了,在设置人员生日的时候,我们的第一套方法强制要求输入Date类型的数据才能识别,这在许多场合并不方便,而且需要做很多额外的处理工作,那么我们再创建一个这个方法的重载,允许以『yyyy-MM-dd』的格式输入生日,这样就方便多了,也直观多了。

这就是多态。








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用提到了头歌实践作业中关于Java继承多态的练习和任务描述。引用给出了Java继承的语法示例,可以使用extends关键字实现继承。引用提到了方法的重写和重载是Java多态性的不同表现,重写是父与子之间多态性的一种表现,而重载则是多态的具体表现形式。 综合来看,头歌中的练习和任务描述主要涉及Java继承多态继承是一种面向对象的编程概念,它允许一个继承另一个属性和方法。在Java中,可以使用extends关键字来实现继承。而多态性则是指一个对象可以具有多种形态,即同一个方法可以在不同的对象上产生不同的行为。在Java中,多态性的表现包括方法的重写和重载。方法的重写是指子重新定义父中已经存在的方法,以实现自己的逻辑。而方法的重载是指在同一个中定义多个同名但参数列表不同的方法。这些概念都是Java面向对象编程中重要的概念,对理解和应用Java编程语言非常重要。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [头歌实践-Java继承多态](https://blog.csdn.net/weixin_53463734/article/details/121021181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [十三、 封装、继承多态](https://blog.csdn.net/CaesarQu/article/details/117373505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网速递520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值