详尽分享继承和多态对应的几类问题

简介: 详尽分享继承和多态对应的几类问题

继承和多态对应的几类问题

员工薪资问题:

例:

某公司的雇员分为以下若干类: Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:void getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励1000元。 SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率 BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。

1 //定义一个父类,包含name和birthday属性

2 public class Employee {办法

3 public String name;

4 public int birthday;

5 public void getSalary(int month){

6 }

7 }

8 //定义一个子类,第一类员工的结算工资办法

9 class SalariedEmployee extends Employee{

10 public double yx;

11 @Override

12 public void getSalary(int month){

13 if(month==birthday){

14 System.out.println(name+month+"月份工资为"+(yx+1000)+"元");

15 }else{

16 System.out.println(name+month+"月份工资为"+yx+"元");

17 }//代码效果参考:http://www.ezhiqi.com/bx/art_787.html

18 }

19 }

20 //定义一个子类,第二类员工的结算工资办法

21 class HourlyEmployee extends Employee {

22 public double hgz;

23 public double hour;

24 @Override

25 public void getSalary(int month) {

26 double gz = (hour < 160) ? (hour hgz) : (hour - 160) 1.5 + (160 hgz);

27 if (month == birthday) {

28 System.out.println(name + month + "月份工资为" + (gz + 1000) + "元");

29 } else {

30 System.out.println(name + month + "月份工资为" + gz + "元");

31 }

32 }

33 }

34 //定义一个子类,第三类员工的结算工资办法

35 class SalesEmployee extends Employee{

36 public double xse;

37 public double tcl;

38 @Override

39 public void getSalary(int month){

40 double gz=(month==birthday)?(xsetcl+1000):(xsetcl);

41 System.out.println(name+month+"月份工资为"+gz+"元");

42 }

43 }

44 //定义一个子类,第四类员工的结算工资办法

45 class BasePlusSalesEmployee extends SalesEmployee{

46 public double dx;

47 @Override

48 public void getSalary(int month){

49 double gz=(month==birthday)?(xse+tcl+dx+1000):(xse+tcl+dx);

50 System.out.println(name+month+"月份工资为"+gz+"元");

51 }

52 }

53 //定义一个测试类,并创建四个对象进行实例化操作

54 class Test2 {

55 public static void main(String【】 args) {

56 SalariedEmployee e1 = new SalariedEmployee();

57 e1.name = "张三";

58 e1.birthday = 1;

59 e1.yx = 3000;

60

61 HourlyEmployee e2 = new HourlyEmployee();

62 e2.name = "李四";

63 e2.birthday = 2;

64 e2.hgz = 10;

65 e2.hour = 160;

66 SalesEmployee e3 = new SalesEmployee();

67 e3.name = "王五";

68 e3.birthday = 3;

69 e3.xse = 100000;

70 e3.tcl = 0.1;

71 BasePlusSalesEmployee e4 = new BasePlusSalesEmployee();

72 e4.name = "赵六";

73 e4.birthday = 4;

74 e4.xse = 100000;

75 e4.tcl = 0.1;

76 e4.dx = 2000;

77 //打印四个人的名字

78 Employee【】 e = {e1, e2, e3, e4};

79 for (Employee em : e) {

80 System.out.println(em.name);

81 }

82 //打印这四人12个月来每个月的薪资情况

83 for (int i = 1; i < 13; i++) {

84 System.out.println("第" + i + "月工资表");

85 e1.getSalary(i);

86 e2.getSalary(i);

87 e3.getSalary(i);

88 e4.getSalary(i);

89 }

90 }

91 }//代码效果参考:http://www.ezhiqi.com/zx/art_4810.html

在多态中,涉及到将子类对象当做父类类型使用的情况,例如Animal animal=new dog();将子类对象当做父类使用时不需要任何显式声明,需要注意的是,此时不能通过父 类变量去调用子类中的某些方法,这时要用到对象类型转换。

instanceof关键字可以判断一个对象是否为某个类(或接口)的实例或者子类实例。

例:

1 public interface Animal {

2 void shout();

3 }

4 class Dog implements Animal{

5 public void shout(){

6 System.out.println("汪汪汪");

7 }

8 }

9 class Cat implements Animal {

10 public void shout() {

11 System.out.println("喵喵喵");

12 }

13

14 public static void main(String【】 args) {

15

16 Cat cat = new Cat();

17 Dog dog = new Dog();

18

19 animalShout(cat);

20 animalShout(dog);

21 // animal1.shout();

22 // animal2.shout();

23 / animalShout(animal1);

24 animalShout(animal2);

25 }

26 public static void animalShout(Animal animal){

27 animal.shout();

28 }/

29 }

30

31 public static void animalShout(Animal animal) {

32 if (animal instanceof Dog) { /instanceof关键字判断animalShout方法中传入的对象是否为Dog类型/

33 //Cat cat = (Cat) animal;

34 //animal.shout();

35 Dog dog = (Dog) animal;

36 animal.shout();

37 } else if(animal instanceof Cat){ /instanceof关键字判断animalShout方法中传入的对象是否为Cat类型/

38 Cat cat=(Cat) animal;

39 animal.shout();

40 }//代码效果参考:http://www.ezhiqi.com/zx/art_884.html

41 }

42 }

匿名内部类

匿名内部类是实现接口的一种简便写法,在程序中不一定非要使用匿名内部类。

格式:new 父类(参数列表)或父接口(){/匿名内部类实现部分*/}

1 //匿名内部类

2 public interface Jiaju {

3 public void name();

4

5 public class Test {

6 public static void main(String【】 args) {

7 zhidaoName(new Jiaju() {

8 @Override

9 public void name() {

10 System.out.println("我是凳子");

11 }

12 });

13 }

14 public static void zhidaoName(Jiaju a){

15 a.name();

16 }

17 }

18 }

相关文章
|
3月前
|
Java 数据库 微服务
Java 学习路线可按「基础→进阶→实战→架构」四阶段推进
Java学习路线分四阶段:基础→进阶→实战→架构。涵盖语法、多线程、框架、微服务等核心内容,搭配项目实战与学习技巧,助你系统掌握Java开发技能,逐步成长为高级工程师。(238字)
475 4
|
存储 Ubuntu Java
超详细总结docker镜像
docker镜像总结
1048 0
|
调度
[DIOCP3-IocpTask说明书]基于IOCP引擎的多线程任务的投递和回调处理单元
【说明】 IocpTask是基于Iocp引擎的多线程任务投递和处理单元,可以方便的把任务进行投递到IOCP线程进行统一调度和处理,是模仿QDAC-QWorker的处理方式,支持D7以上的版本。 【使用方法】 使用上很简单,下面解释一种比较全面的方法: procedure PostATas...
828 0
|
3天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
5196 27
|
10天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
4207 29
|
14天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
7656 66
|
4天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
2091 6
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
4天前
|
人工智能 运维 安全
OpenClaw极速部署:ZeroNews 远程管理OpenClaw Gateway Dashboard指南+常见错误解决
OpenClaw作为高性能AI智能体网关平台,其Gateway Dashboard是管理模型调用、渠道集成、技能插件的核心操作界面,但默认仅支持本地局域网访问。官方推荐的Tailscale、VPN等远程访问方案在国内网络环境中体验不佳,而ZeroNews凭借轻量化部署、专属域名映射、多重安全防护的特性,成为适配国内网络的最优远程管理解决方案。
1482 2
|
5天前
|
存储 人工智能 BI
2026年OpenClaw(Clawdbot)极简部署:接入小红书全自动运营,一个人=一支团队
2026年的小红书运营赛道,AI自动化工具已成为核心竞争力。OpenClaw(原Clawdbot)凭借“Skill插件化集成、全流程自动化、跨平台联动”的核心优势,彻底颠覆传统运营模式——从热点追踪、文案创作、封面设计到自动发布、账号互动,仅需一句自然语言指令,即可实现全链路闭环。而阿里云作为OpenClaw官方推荐的云端部署载体,2026年推出专属秒级部署方案,预装全套运行环境与小红书运营插件,让零基础用户也能10分钟完成部署,轻松拥有7×24小时在线的“专属运营团队”。
1626 8

热门文章

最新文章