Java程序设计单元4解析课件

上传人:94****0 文档编号:241293233 上传时间:2024-06-15 格式:PPT 页数:61 大小:915.64KB
返回 下载 相关 举报
Java程序设计单元4解析课件_第1页
第1页 / 共61页
Java程序设计单元4解析课件_第2页
第2页 / 共61页
Java程序设计单元4解析课件_第3页
第3页 / 共61页
点击查看更多>>
资源描述
单元4设计应用程序的类与接口4.1 引导资料阶段一:类4.2 引导任务4-1定义菜品类4.3 知识解析4.4 训练任务返回下一页单元4设计应用程序的类与接口4.1 引导资料返回下一页单元4设计应用程序的类与接口阶段二:对象4.5引导任务4-2 为菜品类添加主方法4.6知识剖析4.7训练任务上一页 下一页返回单元4设计应用程序的类与接口阶段二:对象上一页下一页返回单元4设计应用程序的类与接口阶段三:继承4.8 引导任务4-3实现餐饮管理系统消费结算功能4.9 知识解析4.10 训练任务上一页 下一页返回单元4设计应用程序的类与接口阶段三:继承上一页下一页返回单元4设计应用程序的类与接口阶段四:接口4.11引导任务4-4 自定义一个用于消费结算的接口4.12知识剖析4.13训练任务上一页返回单元4设计应用程序的类与接口阶段四:接口上一页返回4.1引导资料4.1.1面向对象的基木概念(1)对象(Object)对象由属性(Attribute)和行为(Action)两部分组成,是数据和行为的统一体。属性是用来描述对象静态特征的一个数据项,行为是用来描述对象动态特征的一个操作。一个对象可以是一个手机或用户界面的一个窗口,事实上它可以是任何东西每一种对象都有各自的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统。下一页返回4.1引导资料4.1.1面向对象的基木概念下一页返回4.1引导资料(2)类(Class)共享同一属性和方法集的所有对象的集合构成类。类是Java语言面向对象编程的基本元索,它定义了一个对象的结构和行为。它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分,简单的说类是对象集合的再抽象。类与对象的关系如同一个模具与用这个模具铸造出来的产品之间的关系。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。上一页 下一页返回4.1引导资料(2)类(Class)上一页下一页返回4.1引导资料(3)消息(message)为了能完成固有的任务,对象需要与其他对象进行互操作,这是连接对象与外部世界的唯一通道。互操作可能发生在同一个类的不同对象之间,或是不同类的对象之间通过发送消息给其他对象,传递消息或请求动作,使互操作得到处理例如,当一个用户按下鼠标,选择了屏幕上对话框里的一个命令按钮,一条消息就发给了对话框对象,通知它命令按钮被按下了。消息可用来改变对象的状态或请求该对象完成一个动作。上一页 下一页返回4.1引导资料(3)消息(message)上一页下一页返4.1引导资料(4)接口(interface 接口是一个类所具有的方法的特征集合,是一种逻辑上的抽象。接口是消息的通道,通过接口,消息才能传递到具体的处理方法中进行处理。接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包括与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外并不要求有其他的共同之处。上一页 下一页返回4.1引导资料(4)接口(interface上一页下一页4.1引导资料4.1.2面向对象的特性面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性(1)抽象性抽象(Abstract)是一种机制,就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征它使得复杂的、真实世界的情况可以通过简单的模型被表不出来,是真实世界的对象或概念的模型例如,在设计一个学生成绩管理系统的过程中,考查学生李三这个对象时,就只关心他的姓名、课程、成绩等,而忽略他的出生时间、视力等信息.上一页 下一页返回4.1引导资料4.1.2面向对象的特性上一页下一页返回4.1引导资料(2)封装性封装(Encapsulation)就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节对相关思想的抽象被封装在一个单元里,将抽象出来的状态和行为结合在一个封装的整体里,这个封装体称为类对系统的其他部分来说,状态和行为的真实内部实现被隐藏起来了在Java中,通过在类定义里面来定义属性和方法的方式强制实现封装过程。上一页 下一页返回4.1引导资料(2)封装性上一页下一页返回4.1引导资料(3)继承性继承(Inheritance)是一种联结类与类的层次模型。继承性是指特殊类的对象拥有其一般类的属性和行为,继承意味着“自动地拥有”,即特殊类中不必重新定义已在一般类中定义过的属性和行为,而它却自动地、隐含地拥有其一般类的属性与行为。继承允许和鼓励类的重用,提供了一种明确表述共性的方法一个特殊类既有自己新定义的属性和行为,又有继承下来的属性和行为。尽管继承下来的属性和行为是隐式的,但无论在概念上还是在实际效果上,都是这个类的属性和行为当这个特殊类又被它更下层的特殊类继承时,它继承来的和自己定义的属性和行为又被下一层的特殊类继承下去因此,继承是传递的,体现了大自然中特殊与一般的关系上一页 下一页返回4.1引导资料(3)继承性上一页下一页返回4.1引导资料(4)多态性多态性(Polymorphism)是面向对象系统最终表现出来的基本特征。当使用继承扩展通用的类来得到特殊的类时,通常也会对通用类的一些行为进行扩展。特殊类常常会实现与通用类有些差别的行为,但是行为的名字会保持一样给定一个对象实例,正确地使用它的行为非常重要,而多态性保证这一点自动并且无缝地实现具体来说,多态性是指类中同一函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数继承性和多态性的结合,可以生成一系列虽类似但独一无二的对象由于继承性,这些对象共享许多相似的特征;由于多态性,钊对相同的消息,不同对象可以有独特的表现方式,实现特性化的设计。上一页返回4.1引导资料(4)多态性上一页返回4.2引导任务4一1定义菜品类4.2.1任务要求与目标(1)任务目标能定义类(2)设计要求要能描述菜品的名称、编号、单价等有关特性,并提供获取菜的名称、单价及编号等相关属性的获取与设置值的方法下一页返回4.2 引导任务4一1定义菜品类4.2.1任务要4.2引导任务4一14.2.2实施过程在NetBeans中打开项目repast,然后在该项目中新建一个包ch04.partl,再在ch04.partl包中新建一个类TestVegtable,并为该类添加如下代码,最后保存、编译上一页 下一页返回4.2 引导任务4一14.2.2实施过程上一页下一页4.2引导任务4一1上一页 下一页返回4.2 引导任务4一1上一页下一页返回4.2引导任务4一1上一页返回4.2 引导任务4一1上一页返回4.3知识解析4.3.1类的声明在Java程序里,一个类定义了一个对象的结构和它的功能,以将要表达的概念信息抽象封装在这个类里,封装好的各种功能称为成员方法当Java程序运行时,系统用类来创建类的实例,类的实例就是真正的对象类定义的一般形式如下:访问控制修饰 abstract final extend 父类 implements 接口列表throws 异常类型列表 类体成员变量和成员方法 下一页返回4.3 知识解析4.3.1类的声明下一页返回4.3知识解析4.3.2成员变量类的成员变量表明类的状态,成员变量也称为实例变量成员变量的定义格式如下:访问控制修饰符 static final transients volatile 上一页 下一页返回4.3 知识解析4.3.2成员变量上一页下一页返回4.3知识解析4.3.3成员方法类的方法实现了类所具有的行为,其他对象可以根据类的方法对类进行访问成员方法的定义格式如下:访问控制修饰符static final abstract native synchronized (参数表)throws 异常类型 方法体上一页 下一页返回4.3 知识解析4.3.3成员方法 上一页下一页返回4.3知识解析4.3.4构造方法构造方法可视为一种特殊的方法,它用于对象被创建时初始化成员变量或对象,它具有和它所在的类名完全一样的名字构造方法定义后,创建对象时就会自动调用它构造方法没有返。!类型,这是因为一个类的构造方法的返回类型就是类本身在以前的大部分程序中均定义了构造方法,这些构造方法没有定义其该完成什么工作,亦即空的构造方法,格式如下:public className()上一页 下一页返回4.3 知识解析4.3.4构造方法上一页下一页返回4.3知识解析4.3.5 this 在编写类时,有时需要引用此类的方法或变量,Java通过this来实现此功能this、代表了当前对象的一个引用,可将其看做是对象的另一个名字,通过this可以在任何方法中引用当前的对象。4.3.6 方法重载在Java中,同一个类中可以有2个或2个以上的方法用同一个名字,只要它们的参数。声明或返回值类型不同,该方法就被称为重载(overloaded),这个过程称为方法重载(method overloading)方法重载是Java实现多态性的一种方式。在引导任务4-1中,有两个一样名字的方法TestVegtable,该方法一个带参数,一个不带参数,这就是一种方法重载。上一页 下一页返回4.3 知识解析4.3.5 this上一页下一页返4.3知识解析4.3.7内部类内部类是指在某个类的内部嵌套定义的一个类,内部类可以在一个语句块的内部定义,也可以是其他类的成员,还可以在一个表达式内部匿名定义其定义格式可表述如下:class 外部类 class内部类 上一页返回4.3 知识解析4.3.7内部类上一页返回4.4训练任务 4.4.1跟我学完成引导任务4一1的程序设计与调试工作,具体内容见引导任务4一1 4.4.2自己做创建贪吃蛇中的蛇体类为蛇体类添加相关属性,如蛇的运动方向标识、蛇头坐标、蛇运行速度等,同时为这些属性提供相关的设置与获取值的方法,参考程序见课本P61。创建连连看图片数据的模型类为该类添加相应的数据属性,如游戏级别、总行数总列数、图片数据等并要求设置这些属性的获取与设置值的方法,参考程序见课本P63。返回4.4 训练任务 4.4.1跟我学返回4.5引导任务4-2为菜品类添加主方法4.5.1任务要求与目标(1)任务目标能完成类的实例化(2)设计要求通过TestVegtable。类的对象来获取某一种菜的名称、编号、单价并使其能输出某种菜的名称、编号、单价4.5.2实施过程在项目repast中新建包ch04.part2,并在该包中创类建TestVegMain为该类添加如下代码:下一页返回4.5引导任务4-2 为菜品类添加主方法4.5.4.5引导任务4-2上一页 下一页返回4.5引导任务4-2上一页下一页返回4.5引导任务4-2 最后保存、编译程序,运行结果如图4一1所示在main方法中创建了一个TestVegtable的对象testVegtable,并通过该对象相应的get方法和set方法完成相关内容的存取上一页返回4.5引导任务4-2上一页返回4.6知识解析4.6.1对象的创建其实,将类进行实例化就产生了一个对象对象是在程序执行过程中由其所属的类动态生成的,一个类可以生成多个不同的对象将类实例化就生成对象,并通过消息激活指定的某个类的对象的方法以改变其状态或产生一定的行为,从而完成某一任务Java语言中用创建实例对象的操作符new来创建对象,其格式如下:=下一页返回4.6 知识解析4.6.1对象的创建下一页返回4.6知识解析4.6.2对象的使用对象必须在实例化之后才能够使用,这一点与前面所说的变量一样其实,变量也可看做是一种特殊数据类型的对象当对象实例化之后,就可以用点操作符“.”来完成对类成员变量和成员方法的访问操作对类成员的访问一般形式为:.上一页 下一页返回4.6 知识解析4.6.2对象的使用上一页下一页返回4.6知识解析4.6.3访问控制在讲述类的成员变量和成员方法时,提到它们都具有相应的访问控制修饰符Java规定可以选择4种访问方式:public,private,protected和、default它们的具体含义如表4一1所示被访问控制修饰符修饰后的成员变量或方法所具有的访问权限详见表4一2(“”表示可以访问,“x”表示不可以访问)上一页 下一页返回4.6 知识解析4.6.3访问控制上一页下一页返回4.6知识解析4.6.4 Java的垃圾回收在Java程序的生命周期中,Java运行环境提供了一个系统的垃圾回收器线程,负责自动回收那些没有引用与之相连对象所占用的内存,这种内存回收的过程就叫垃圾回收垃圾回收机制有如下两个好处:它把程序员从复杂的内存追踪、监测、释放等工作中解放出来;它防止了系统内存被非法释放,从而使系统更加稳定垃圾回收机制具有以下特点:只有当一个对象不被任何引用类型的变量使用时,它的内存才能被垃圾回收;不能通过程序强迫垃圾回收立即执行;当垃圾回收器将要释放无用对象的内存时,先调用该对象的finalize()方法上一页 下一页返回4.6 知识解析4.6.4 Java的垃圾回收上一4.6知识解析4.6.5 static 在类的定义中,其成员变量和成员方法如果有static修饰,那么该变量或方法就称为静态变量或方法相反没有static修饰的变量或方法就称为非静态变量或方法这种由static修饰的变量或方法不需要实例化就可以使用,是类固有的,可以直接由类引用且只有一个备份,它被所有对象共享其使用格式是:类名.变量名或方法名上一页 下一页返回4.6 知识解析4.6.5 static上一页下一页4.6知识解析4.6.6对象的比较在Java中我们可以用两种方法来比较两个对象是否相等:一是用“=”运算符;二是用equals方法该两种方法的用法如下:如果是基本类型比较,那么只能用=来比较,即比较基本数据类型的值;如果是对象,则=和equal、比较的都是对象内存中的首地址(即比较引用的对象是否为同一个对象);对于基本类型的包装类型,比如Boolean,Character,Byte,Short,Integer,Long,Float,Double等的引用变量,=是比较地址的,而equals是比较内容的上一页返回4.6 知识解析4.6.6对象的比较上一页返回4.7训练任务4.7.1跟我学完成引导任务4-2的程序设计与调试工作,具体内容见引导任务4-24.7.2自己做为贪吃蛇中的蛇体类添加主方法,以测试蛇体的速度、方向、蛇头颜色、蛇身颜色、蛇体状态等程序写法参见引导任务4-2 为连连看数据模型类添加主方法,以测试连连看游戏的开始时间、游戏运行时间、游戏级别等内容程序写法参见引导任务4-2返回4.7 训练任务4.7.1跟我学返回4.8引导任务4一34.8.1任务要求与目标(1)任务目标学会使用类的继承与多态性(2)设计要求当消费结算时,可不打折直接结算,也可以按会员85折、非会员95折的标准进行结算现要求用继承来实现多种结算方式下一页返回4.8引导任务4一3 4.8.1任务要求与目标下一4.8引导任务4一34.8.2实施过程在项目repast中新建包ch04.part3,并在该包中新建一个TestExtendsP为该类添加如下代码,最后保存、编译上一页 下一页返回4.8引导任务4一34.8.2实施过程上一页下一页4.8引导任务4一3 在ch04.part3包中新建一个类TestExtMem,并为该类添加如下代码,最后保存、编译上一页 下一页返回4.8引导任务4一3 在ch044.8引导任务4一3在ch04.part3包中新建一个类TestExt,并为该类添加如下代码,最后保存、编译上一页返回4.8引导任务4一3在ch04.part3包中新建4.9知识解析4.9.1继承继承是面向对象程序设计的一个重要特征,它是通过继承原有的类而派生出新的类,被继承的类称为父类,派生出的新类为子类,子类继承父类的成员变量和成员方法,同时还可以修改父类的变量或重写父类的方法并可以添加新的变量和方法。通过继承可以实现代码的复用,使程序组织层次更加清晰同时可以缩短开发周期。在Java语言中,有一个称为Object的特殊类,所有的类都是直接或间接地继承Object类。下一页返回4.9 知识解析4.9.1继承下一页返回4.9知识解析4.9.2隐藏与覆盖在任务4一3中,类TestExtendsP,TestExtMem和TestExt中都有方法Total(),且类TP S-tExtMem和TestExt继承了类TestExtendsP在这种情况下,即在类的继承中,当子类的成员变量与父类的成员变量同名时,子类的成员变量会隐藏父类的成员变量;当子类的方法与父类的方法同名,参数列表、返lnt值类型相同时,子类的方法将覆盖父类的方法;当子类重写的方法由子类的对象调用时,它总是参考子类中的定义,父类中定义的该方法就被覆盖方法重写为子类提供了修改父类成员方法的能力。上一页 下一页返回4.9 知识解析4.9.2隐藏与覆盖上一页下一页返回4.9知识解析4.9.3 super 子类在隐藏了父类的成员变量或重写了父类的方法以后,有时还要用到父类的成员变量或为简化代码的编写在重写方法中使用父类中的该方法,这时就要访问父类的成员变量或调用父类的方法Java通过supe:关键字来实现对父类成员变量的访问上一页 下一页返回4.9 知识解析4.9.3 super上一页下一页4.9知识解析4.9.4抽象类和抽象方法用abstract关键字修饰的类称为抽象类;由abstract关键字修饰的类方法称为抽象方法一个抽象类可含有抽象方法,但抽象方法不能出现在非抽象类中;一个抽象类不一定要有抽象方法,但一个类如果含有抽象方法就一定要声明为抽象类抽象类本身不具备实际的功能,只能够用于派生子类,而定义为抽象的方法必须在子类中重写,即覆盖原方法也就是说,如果一个类被定义为抽象类,则该类不能进行实例化,必须通过覆盖的方式来实现抽象类中的方法。上一页 下一页返回4.9 知识解析4.9.4抽象类和抽象方法上一页下一4.9知识解析4.9.5 final修饰符修饰符final既可修饰类,也金额修饰成员变量和成员方法,其用于限制这些被修饰的类、成员变量和成员方法的非继承性,即是最终的一种形式如果在定义类时加上final修饰符,则说明该类是最终类,不能被其他类继承,也不能进行实例化,如以下简单代码所示:上一页 下一页返回4.9 知识解析4.9.5 final修饰符上一页4.9知识解析4.9.6多态性多态是面向对象中的一个重要特征,是指用相同的名字来定义方法,其中每个方法的参数类型和返回值类型均不相同在Java中,多态性体现在两个方面:由方法重载实现的静态多态性和方法覆盖实现的动态多态性这些内容分别在方法重载和隐藏与覆盖两个知识点中讲述过了,在此就不再说明了4.9.7初始化的过程构造方法可能进行初始化工作,而类的成员变量本身也能自动进行初始化,那么在对象生成时。在初始化的过程中,先静态成员,然后是非静态成员,再是构造方法若有父类,则父类的相关初始化在子类之前上一页返回4.9 知识解析4.9.6多态性上一页返回4.10训练任务4.10.1跟我学完成引导任务4一3的程序设计与调试工作,具体内容见引导任务4一34.10.2自己做用继承创建食物类Food,要求继承Point类,以方便记录食物的坐标位置,参考程序如下:下一页返回4.10训练任务4.10.1跟我学下一页返回4.10训练任务上一页返回4.10训练任务上一页返回4.11引导任务4一44.11.1任务要求与目标(I)任务目标能定义并使用接口(2)设计要求该接口能根据不同级另of的消费会员给出不同的折扣4.11.2实施过程在项目repast中新建包ch04.part4并在该包中新建一个类TestCountInte:为该接口添加如下代码,最后保存、编译下一页返回4.11 引导任务4一44.11.1任务要求与4.11引导任务4一4 在NetBeans中新建类CountInterImplOne,并为该类添加如下代码,最后保存、编译上一页 下一页返回4.11 引导任务4一4上一页下一页返回4.11引导任务4一4 在NetBeans中新建类CountInterImplTw。并为该类添加如下代码,最后保存、编译在NetBeans中新建类CountInterDemo并为该类添加如下代码,最后保存、编译上一页 下一页返回4.11 引导任务4一4 4.11引导任务4一4上一页 下一页返回4.11 引导任务4一4上一页下一页返回4.11引导任务4一4 运行结果如图4一3所示类CountInterImplOne和类CountInterImplTwo分别实现了接口TestCountInter,通过类CountInt-erDemo的对象用接口完成了相关的访问操作上一页返回4.11 引导任务4一4 运行结果如图44.12知识解析4.12.1接口目前,我们已经知道如何通过继承使类的层次更加清晰以及如何用抽象类将常规操作抽象为继承结构中的较高级别的类,也知道Java不支持多继承有时我们希望一个类能包含两个或更多的父类,但又不希望引进多继承的复杂性和低效率,于是Java提供了一种特特的类型,那就是接口从任务4-4中,可以得出接口的定义形式为:public interface接口名称更为完整的接口的定义形式为:public interface接口名称extend 父类接口名 /接口体 返回4.12知识解析4.12.1接口返回4.13训练任务4.13.1跟我学完成引导任务4-4的程序设计与调试工作,具体内容见引导任务4-44.13.2自己做创建贪吃蛇中的墙体接口CroundInter,参考程序如下下一页返回4.13训练任务4.13.1跟我学下一页返回4.13训练任务创建墙体类Ground,并实现墙体接口GroundInte:另外,要求增加与贪吃蛇墙体相关的属性以及这些属性相对应的设置与获取值的方法,参考程序如下上一页 下一页返回4.13训练任务创建墙体类Ground,并实现墙体接口G4.13训练任务上一页 下一页返回4.13训练任务上一页下一页返回4.13训练任务上一页 下一页返回4.13训练任务上一页下一页返回4.13训练任务上一页 下一页返回4.13训练任务上一页下一页返回4.13训练任务上一页返回4.13训练任务上一页返回图4-1返回图4-1返回表4-1返回表4-1返回表4-2返回表4-2返回图4-3返回图4-3返回
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!