人工智能时代Java项目实战 课件 4-项目四-实现类的继承与多态_第1页
人工智能时代Java项目实战 课件 4-项目四-实现类的继承与多态_第2页
人工智能时代Java项目实战 课件 4-项目四-实现类的继承与多态_第3页
人工智能时代Java项目实战 课件 4-项目四-实现类的继承与多态_第4页
人工智能时代Java项目实战 课件 4-项目四-实现类的继承与多态_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工智能时代Java项目实战项目四实现类的继承与多态·实现单继承·实现抽象类与多态·实现接口与多态·实现薪水计算功能刘丹

任务描述上海御恒信息科技公司接到一家人工智能公司的项目订单,要求用单继承设计实现人工智能机器人,一个超类,两个子类,超类具备编号id(可继承)、超能力superAbility(不可继承),一个子类具备人类的人性,另一个子类具备人类的思维能力。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉Java的单继承,并能搭建项目整体架构,小张按照经理的要求开始做以下的任务分析。任务一实现单继承实现单继承首先要绘制类图,其次要创建超类FatherAI、封装保护变量id、封装私有变量superAbility、封装超类的公有构造方法和存取器,然后要创建子类YouAI、封装私有变量hb、封装子类的公有构造方法和存取器,接着要创建子类MyAI、封装私有变量think、封装子类的公有构造方法和存取器,最后要通过主类MainProg实现控制台界面输出。

任务分析任务一实现单继承第一步:绘制单继承类图,如下图所示。

任务实施任务一实现单继承第二步:创建超类FatherAI、封装保护变量id、封装私有变量superAbility、封装超类的公有构造方法和存取器。

任务实施任务一实现单继承第二步:创建超类FatherAI、封装保护变量id、封装私有变量superAbility、封装超类的公有构造方法和存取器。

任务实施任务一实现单继承

任务实施任务一实现单继承第三步:创建子类YouAI、封装私有变量hb、封装子类的公有构造方法和存取器。

任务实施任务一实现单继承第三步:创建子类YouAI、封装私有变量hb、封装子类的公有构造方法和存取器。

任务实施任务一实现单继承第四步:创建子类MyAI、封装私有变量think、封装子类的公有构造方法和存取器。

任务实施任务一实现单继承第四步:创建子类MyAI、封装私有变量think、封装子类的公有构造方法和存取器。

任务实施第五步:通过主类MainProg实现控制台界面输出。任务一实现单继承

任务实施第五步:通过主类MainProg实现控制台界面输出。任务一实现单继承

任务实施第六步:将以上四个类放入同一个包project04.task01中进行调试,

得到如下结果:任务一实现单继承1、类图中超类在上方,子类在下方,子类的箭头从下向上指向超类。2、超类的protected变量和方法可以被自己和子类使用。3、子类从超类继承使用:publicclass子类名extends超类名{}。4、子类的构造方法调用超类的构造方法使用super()。5、子类的方法judge()覆盖了超类的同名方法judge(),这称为重写。6、在主类的主方法main()中测试超类和子类,只需分别为其新建对象,用对象分别调用各自的

方法即可。

任务小结任务一实现单继承1、在Java中,有四个常见的修饰符,它们用于定义类、变量、方法和构造器的访问级别和属性。这四个修饰符是:(1)public:这是最开放的访问修饰符。如果一个类、方法或变量被声明为public,那么它可以从任何其他类中访问。(2)private:这是最严格的访问修饰符。如果一个类、方法或变量被声明为private,那么它只能在它所属的类中被访问。(3)protected:这是一个折衷的访问修饰符。如果一个类、方法或变量被声明为protected,那么它可以在同一包中的其他类以及包外的其他包中的子类中被访问。(4)default(无修饰符):如果没有使用任何访问修饰符,那么该类、方法或变量只有在其所属的包中才是可见的,称为包私有(package-private)。

这些修饰符可以帮助你控制类的封装和数据隐藏,这是面向对象编程的一个重要概念。通过合理地使用这些修饰符,你可以确保数据的完整性和安全性,同时提供适当的接口以供其他类使用。

任务拓展任务一实现单继承2、在Java中,子类可以通过super()调用超类的构造方法。这个调用必须在子类的构造方法中,而且必须是子类构造方法的第一条语句。调用超类构造方法的语法如下:super(参数列表);如果没有显式地调用超类的构造方法,Java编译器会为子类构造方法生成一个不带参数的super()调用。这个机制允许我们在子类的构造方法中,首先执行超类构造方法的代码,然后再执行子类自己的代码。这可以确保超类的对象被正确地初始化,然后再进行子类的初始化。3、在Java中,extends关键字用于实现类的继承。一个类(称为子类或派生类)可以通过使用extends关键字来继承另一个类(称为父类或基类)的属性和方法。这样,子类就自动地获得了父类的所有属性和方法,同时还可以定义自己的新属性和方法。

任务拓展任务一实现单继承1、请问如何设计单继承类图?2、请问超类中的protected与private修饰符有何区别?3、请问如何调用超类的构造方法?4、请问如何调用超类的实例方法?5、请问子类从超类继承需使用哪个关键字?6、请问子类覆盖超类的同名方法被称做什么?

任务思考任务一实现单继承上海御恒信息科技公司接到一家人工智能公司的项目订单,要求用抽象类与多态修改人工智能机器人,一个超类修改为抽象类,两个子类为一般的类,一个子类实现人性的判断,另一个子类实现人类思维能力的判断。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉Java的抽象类与多态,并能搭建项目整体架构,小张按照经理的要求开始做以下的任务分析。

任务描述任务二实现抽象类与多态实现抽象类与多态首先要修改类图,其次要修改超类FatherAI,在其类名前加入关键字abstract、然后在judge()方法前也加入关键字abstract,接着要在子类YouAI和MyAI中重写超类的抽象方法,最后要通过主类MainProg验证两个子类的功能是否实现。

任务分析任务二

实现抽象类与多态

任务实施第一步:修改以下单继承类图,在类名FatherAI前加入关键字abstract,并在FatherAI类中的judge()方法前也加入关键字abstract。任务二

实现抽象类与多态第二步:修改超类FatherAI,在class前加入关键字abstract,使其变为抽象类,在Stringjudge()方法前也加入关键字abstract,使其变为抽象方法。

任务实施任务二

实现抽象类与多态

任务实施第三步:保持子类YouAI的代码不变。任务二

实现抽象类与多态

任务实施第四步:保持子类MyAI的代码不变。任务二

实现抽象类与多态

任务实施第五步:修改主类MainProg来验证抽象超类的抽象方法在子类中是如何实现的。任务二

实现抽象类与多态

任务实施第五步:修改主类MainProg来验证抽象超类的抽象方法在子类中是如何实现的。任务二

实现抽象类与多态

任务实施第六步:将以上四个类放入同一个包project04.task02中进行调试,

得到如下结果:任务二

实现抽象类与多态1、修改类图中的超类,在抽象类和抽象方法前加关键字abstract。2、publicabstractclassFatherAI{}表示该类为抽象类。3、抽象类中必须有抽象方法。4、publicabstractStringjudge();是抽象方法的声明,里面不

能有算法,必须放入超类。5、子类YouAI和MyAI的方法judge()必须实现超类的抽象方法

judge(),而且它们的算法各不相同。

任务小结任务二

实现抽象类与多态6、FatherAIfobj;表示给超类新建引用。7、YouAIyobj=newYouAI();或MyAImobj=newMyAI();表示

给子类新建对象。8、fobj=yobj;或fobj=mobj;表示用超类的引用fobj分别指向不

同的子类对象yobj或mobj。9、System.out.println(fobj.judge());表示用超类的引用指向子

类yobj或mobj的对象。

任务小结任务二

实现抽象类与多态1、"抽象"这个词在不同的上下文中有不同的含义,以下是一些常见的解释:(1)在数学和逻辑中:抽象是从具体事物中提取共同特征的过程,这些特征在去掉具体细节后仍然保持不变。例如,数字“2”就是一个抽象概念,代表任何数量为2的集合。(2)在艺术和设计中:抽象通常指去除具象表达形式,用形状、线条、色彩等元素来表达情感、观念或经验。抽象艺术不一定要描绘实际物体,而是通过非具象的手法来传达意义。(3)在计算机科学中:抽象是隐藏复杂细节的方法,只暴露必要的信息。这有助于简化问题,并使复杂系统更容易理解和使用。在面向对象编程中,抽象是一种重要的概念,包括抽象类和抽象方法。(4)在日常用语中:抽象还可以指一种深奥、难以理解或模糊的表达方式。例如,某人的写作风格很抽象,或者某人的语言很抽象,意味着他们使用的词汇或表达方式可能难以理解或解释。(5)在心理学中:在心理学中,抽象能力是指理解和处理概念的能力,而不是具体的物体或事件。总之,"抽象"这个词的含义取决于上下文。在不同领域和文化中,它可能有更多的含义和用法。如果你能提供更多的上下文信息,我可以为你提供更精确的解释。

任务拓展任务二

实现抽象类与多态2、在Java中,abstract是一个关键字,用于定义抽象类和抽象方法。抽象类和抽象方法的主要目的是为了提供一种方式来组织相关的类和行为,而不必实现所有的细节。3、一个抽象类是不能被实例化的类。它只能作为其他类的基类,并且包含至少一个抽象方法。抽象类可以包含具体方法和变量,这些方法和变量可以被其子类继承和使用。抽象方法是只有声明没有实现的方法,它存在于抽象类中。任何继承了抽象类的子类都必须实现这些方法。示例:

任务拓展任务二

实现抽象类与多态4、使用抽象类的注意事项:(1)不能直接实例化抽象类。(2)任何继承自抽象类的子类都必须实现所有的抽象方法。如果子类也是抽象类,它可以包含更多的抽象方法。如果子类不是抽象类,那么它必须实现其父类的所有抽象方法。(3)抽象类可以包含构造方法,用于初始化其非静态成员变量。这些构造方法可在创建子类的对象时调用。(4)抽象类可以包含非抽象的方法,这些方法可以在子类中被覆盖。5、为什么使用抽象?:使用抽象可以提供更好的组织结构,使得代码更加模块化和易于管理。通过定义基类来共享公共属性和行为,可以避免代码重复,并使得代码更加易于维护和扩展。

任务拓展任务二

实现抽象类与多态1、请问如何设计包含抽象类和抽象方法的类图?2、请问为何要使用抽象类?3、请问抽象超类和一般超类的区别是什么?4、请问抽象方法和一般方法的区别是什么?5、请问怎么知道超类的引用调用的是哪个子类的方法?6、请问超类的引用可以调用自己的方法吗?

任务思考任务二

实现抽象类与多态

任务描述上海御恒信息科技公司接到一家人工智能公司的项目订单,要求用接口与多态修改之前设计的人工智能机器人,两个子类转换为接口,超类转换为子类。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉Java的接口与多态,并能搭建项目的整体架构,小张按照经理的要求开始做以下的任务分析。任务三实现接口与多态实现接口与多态首先要绘制接口与子类的类图,其次要创建接口YouAI、封装常量HB、封装抽象方法judgeHb(),然后要创建接口MyAI、封装常量THINK、封装抽象方法judgeThink(),接着要创建子类SonAI、封装私有变量id和superAbility、封装超类的公有构造方法和存取器、封装接口抽象方法的具体实现,最后要通过主类MainProg实现控制台界面输出。

任务分析任务三

实现接口与多态第一步:绘制接口与子类的类图,如下图所示。

任务实施任务三

实现接口与多态第二步:创建接口YouAI、封装常量HB、封装抽象方法judgeHb()。

任务实施任务三

实现接口与多态第三步:创建接口MyAI、封装常量THINK、封装抽象方法judgeThink()。

任务实施任务三

实现接口与多态

任务实施任务三

实现接口与多态第四步:创建子类SonAI、从两个接口继承、封装私有变量id和superAbility、封装超类的公有构造方法和存取器、封装接口抽象方法的具体实现。

任务实施任务三

实现接口与多态第四步:创建子类SonAI、从两个接口继承、封装私有变量id和superAbility、封装超类的公有构造方法和存取器、封装接口抽象方法的具体实现。第五步:通过主类MainProg来验证两个接口是如何在子类中实现的。

任务实施任务三

实现接口与多态第五步:通过主类MainProg来验证两个接口是如何在子类中实现的。

任务实施任务三

实现接口与多态第六步:将以上四个类放入同一个包project04.task01中进行调试,

得到如下结果:

任务实施任务三

实现接口与多态1、接口的关键字为interface。2、接口中只能封装常量和抽象方法。3、子类从接口继承,要使用关键字implements。4、implements后的接口可以有多个,实现时依次自左至右调用。5、接口在主方法main()中只能新建引用。6、接口的引用要指向子类对象后,才能用该接口引用调用子类的抽象方法实现。

任务小结任务三

实现接口与多态1、在计算机编程中,interface是一个关键字,用于定义一个合同或规范,描述了一组方法,但没有实现这些方法。实现了某个接口的类必须提供这些方法的实现。在Java中,接口可以用来:(1)定义一组方法的规范:接口中可以定义方法,但没有具体的实现。实现了该接口的类必须提供这些方法的具体实现。(2)多态性的基础:通过实现接口,类可以实现多重继承。这意味着一个类可以实现多个接口,并因此继承多个方法的集合。(3)作为回调和事件驱动编程的一部分:在事件驱动编程中,你可以定义一个接口,并在需要的时候传递一个实现了该接口的对象。(4)组织相关的方法:通过将相关的方法放在一个接口中,可以更清晰地组织代码,使其更加模块化。

任务拓展任务三

实现接口与多态2、接口的示例:

在这个例子中,Animal是一个接口,它定义了两个方法makeSound()和eat()。Dog类实现了Animal接口,并提供了这两个方法的具体实现。

任务拓展任务三

实现接口与多态3、在Java中,implements是一个关键字,用于实现一个接口。一个类可以实现多个接口,这意味着它必须提供所有这些接口中定义的所有方法的实现。使用implements的目的是为了实现接口中定义的方法。通过实现接口,一个类可以提供一种标准化的方式来定义和组织一组方法,并确保其实现符合某种规范或合同。这有助于提高代码的可维护性和可扩展性,因为你可以在一个类中添加更多的接口,而不必修改类的实现。例如,上例中的classDogimplementsAnimal{},表示Dog类实现了Animal接口,并提供了`makeSound()`和`eat()`方法的实现。

任务拓展任务三

实现接口与多态4、Java中的接口可以包括常量。在Java中,接口中的常量被声明为publicstaticfinal。这意味着它们是公共的、静态的、并且是只读的。由于它们是静态的,接口中的常量可以在不创建接口的实例的情况下被访问。

以下是一个示例,其中包含一个接口和该接口中的一个常量:

在这个例子中,MY_CONSTANT是一个常量,它的值被设置为10。任何实现了MyInterface接口的类都可以直接使用这个常量,不需要创建接口的实例。

任务拓展任务三

实现接口与多态5、在Java中,如果一个接口中的引用指向一个子类的对象,那么该引用必须被声明为该子类的类型,而不是接口类型。这是因为Java中的接口不能包含对象的实例,只能包含方法的声明。因此,当你在代码中使用一个接口引用时,实际上是指向实现该接口的某个类的对象。右图是一个示例:

在这个例子中,myRef是一个MyInterface类型的引用,但它指向了一个MyClass的对象。由于MyClass实现了MyInterface接口,所以它可以被赋值给MyInterface类型的引用。通过调用myRef.myMethod(),我们调用了MyClass中实现的myMethod()方法。

任务拓展任务三

实现接口与多态1、请问接口在定义时要使用哪个关键字?2、请问子类从接口继承要使用哪个关键字?3、请问接口中只能封装抽象方法吗?4、请问接口只能新建引用吗?5、请问接口的引用指向子类对象的目的是什么?6、请问Java中的接口可以实现C++中的多继承吗?

任务思考任务三

实现接口与多态上海御恒信息科技公司接到一家互联网公司的项目订单,要求能实现薪水计算功能。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉Java的继承与多态,并能运用主类、界面类来搭建项目主体结构,小张按照经理的要求开始做以下的任务分析。任务描述任务四实现薪水计算功能实现薪水计算功能首先要设计接口和多态的类图,其次要设计接口Employee、在其中封装常量(基本工资wage)和计算薪水的抽象方法getSalary(),然后设计接口Employee的子类Manager、在其中封装私有变量津贴allowance、实现接口的抽象方法getSalary(),接着设计MainWindow类、在其中封装整个窗口界面的算法,最后通过MainProg主类调用MainWindow显示界面并实现所有算法。任务分析任务四

实现薪水计算功能任务实施任务四

实现薪水计算功能第一步:设计接口和多态的类图,如下图所示。任务实施任务四

实现薪水计算功能第二步:设计接口Employee、在其中封装常量(基本工资wage)和计算薪水的抽象方法getSalary()。任务实施任务四

实现薪水计算功能第三步:设计接口Employee的子类Manager、在其中封装私有变量津贴allowance、实现接口的抽象方法getSalary()。任务实施任务四

实现薪水计算功能第四步:设计MainWindow类、在其中封装整个窗口界面的算法。任务实施任务四

实现薪水计算功能第四步:设计MainWindow类、在其中封装整个窗口界面的算法。任务实施任务四

实现薪水计算功能第四步:设计MainWindow类、在其中封装整个窗口界面的算法。任务实施任务四

实现薪水计算功能第五步:通过MainProg主类调用MainWindow显示界面并实现所有算法。任务实施任务四

实现薪水计算功能第六步:将以上四个类放入同一个包project04.task04中进行调试,

得到下图结果:显示经理的薪水显示雇员的薪水任务小结1、接口Employee封装常量(基本工资wage)。2、子类Manager封装变量(津贴allowance)。3、抽象方法getSalary()在接口Employee中声明,在子类Manager中实现具体

功能。4、implements后的接口可以有多个,实现时依次自左至右调用。5、窗口类MainWindow作为子类从超类JFrame和接口ActionListener继承。6、JFrames可以帮助子类实现GUI界面显示。7、ActionListener可以帮助子类实现事件方法中的算法。8、主类MainProg的main()方法调用窗口类MainWindow来实现所有功能。任务四

实现薪水计算功能1、JFrame是JavaSwing框架中的一个类,用于创建窗口。它是`java.awt.Frame的子类,并添加了一些Swing特有的功能。使用JFrame,你可以创建一个基本的窗口,并添加其他GUI组件,如按钮、文本框等。下面是一个简单的例子,展示了如何使用JFrame来创建一个窗口:

上述代码会创建一个标题为"MyWindow"的简单窗口。你可以在这个基础上添加更多的组件,如按钮、文本框等,以构建更复杂的GUI应用程序。任务拓展任务四

实现薪水计算功能2、ActionListener是Java中用于响应动作事件的接口。它是java.awt.event包的一部分,主要用于处理图形用户界面(GUI)中的按钮点击、菜单选择等动作事件。当你在GUI中有一个组件(如按钮或菜单项),并且你希望在用户与之交互时执行某些操作(例如打开新窗口或执行某些命令),你可以为此组件添加一个ActionListener。下面是一个简单的例子,演示了如何为一个按钮添加ActionListener:

任务拓展任务四

实现薪水计算功能2、

在上述代码中,我们为按钮添加了一个匿名的ActionListener。当用户点击这个按钮时,控制台将输出"Buttonclicked!"。任务拓展任务四

实现薪水计算功能1、请问JFrame是哪个类的子类?2、请问ActionListener是接口还是类?3、请问ActionListener的抽象方法是什么?4、请问单击按钮没有反应是什么原因?任务思考任务四

实现薪水计算功能

项目描述项目综合实训设计人工智能机器人系统上海御恒信息科技公司接到某公司的项目订单,要求用继承与多态设计人工智能机器人,公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉Java的继承与多态,并能用类图和注释搭建项目的整体架构,小张按照经理的要求开始做以下的项目分析。设计人工智能机器人系统首先要绘制接口、超类与子类的类图,其次要创建父接口BatMan、IronMan,然后要创建超类SuperMan、创建父接口Hulk、创建父接口BatMan和IronMan的共同子接口Robot,接着要创建子类AIRobot并分别从抽象超类SuperMan,父接口Hulk,子接口Robot继承,最后要通过主类MainProg来验证子类AIRobot是否能实现它的所有超类和接口的功能以及自己的功能。

项目分析项目综合实训设计人工智能机器人系统

项目实施项目综合实训设计人工智能机器人系统第一步:绘制人工智能机器人的接口、超类与子类的类图,如下图所示。

项目实施项目综合实训设计人工智能机器人系统第二步:创建父接口BatMan、封装常量FLYANGLE、封装抽象方法nightFly()。

项目实施项目综合实训设计人工智能机器人系统第三步:创建父接口IronMan、封装常量JUMPDIRECTION、封装抽象方法jump()。

项目实施项目综合实训设计人工智能机器人系统第四步:创建超类SuperMan,在class前加入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论