版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java面向对象程序设计1java面向对象程序设计java面向对象程序设计2第一章 类和对象 面向对象(object oriented,oo)。 起初,“面向对象”是指在程序设计中采用封装、继承、多态等设计方法。现在,面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(ooa,objectoriented analysis),面向对象的设计(ood,object oriented design)、以及面向对象的编程实现(oop,object oriented programming)。java面向对象程序设计3对象和类解释:1)对象:对象是人们要进行研究的任何事物,它不仅能表示具体
2、的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。2)类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。对象和类的关系:类与对象的关系就如模具和铸件的关系,类的实力化的结果就是对象,而对对象的抽象就是类,类描
3、述了一组有相同特性(属性)和相同行为的对象。java面向对象程序设计4第2章 类的无参和带参 java作为一种面向对象程序语言,对象执行的操作是通过编写类的方法实现的。类的方法是一个功能模块,其作用是做一件事情。类的方法必须包含以下三个部分: *方法的名称 *方法的返回值类型 *方法的主体java面向对象程序设计5语法为:public 返回值类型 方法名() /方法的主体方法名一般采用骆驼命名法;方法执行后可能会返回一个结果,类型为返回值类型语法为:return 表达式;如果没有返回值,则返回值类型为void;因此在编写程序时一定要注意方法声明中返回值类型和方法体中真正返回值的类型是否匹配。r
4、eturn的意思是离开方法,并将表达式的值返回给调用它的程序。定义了方法就要拿来是使用哦,在程序中通过使用方法名称从而执行方法中包含的语句的过程,称为方法调用。形式一般如下: 对象名.方法名();凡涉及类方法的调用,均使用以下两种形式:*同一个类中的方法,直接使用方法名调用该方法*不同类的方法,首先创建对象,再使用对象名.方法名()来调用。编写方法、调用方法时,一定要注意避免出现以下错误:*方法返回值类型为void时方法中不能有return语句*方法不能返回多个值*多个方法不能互相嵌套定义*不能在方法外部直接写程序逻辑代码java面向对象程序设计6java中以类来组织程序,类中可以定义变量和方
5、法,而类的方法中也可以定义变量类中定义的变量称为类的成员变量,而方法中的称为局部变量。其他类的方法如果要访问成员变量必须先创建该类的对象,然后才能通过操作符.来引用;局部变量的作用域仅仅在定义该变量的方法内。java会给成员变量一个默认值,基本数据类型的值为0,引用类型的值为null;java不会给局部变量初始值,必须定义赋值后使用。局部变量可以和成员变量同名,使用时局部变量有更高的优先级。for while do-while if switch结构中定义的变量,定义域也仅仅在这些程序流控制块内。接下来讲面向对象编程(oop):这是一种90年代才开始流行起来的软件编程思想,一条基本原则是计算机
6、是由单个能够起到子程序作用的单元或对象组合而成的,优势在于灵活性、重用性和扩展性。类可以实现某个特定的功能。只需要知道此功能的类和它的方法名,就可以直接调用,而不用重复编码。 java除了单行注释和多行注释之外,还有javadoc注释,能够从程序源代码中抽取类、方成员等的注释,形成一个和源代码配套的api帮助文档(介绍类、类方法和成员变量)。java面向对象程序设计7 语法规则: *一般以/*开头,以*/结尾 *每个注释包含一些描述性的文本及若干个javadoc标签 *javadoc标签一般以为前缀(author作者名;parameter参数及其意义;return返回值) 使用myeclips
7、e生成javadoc文档的操作方法:file-export-选择java菜单中javadoc选项,提交即可。 带参方法:方法中某种功能的实现依赖于我们给他的初始信息,这时候在定义方法时就需要在括号中加入参数列表。java面向对象程序设计8java以类组织程序,开发一个大型的工程可能需要编写成百上千个类,很容易出现重名而产生错误,包的出现就是为了避免重名的问题。*包允许将类组合成较小的单元,易于找到和使用相应的类文件。*防止命名冲突:java中只有不同包中的类才能重名。*包允许在更广的范围内保护类,数据和方法,可以在包内定义类。包外的代码有可能不能访问该类。使用package命令生成包。*包的名
8、称通常由小写字母组成,不能以圆点开头结尾。*包通常使用组织的网络域名的逆序。*包命名后部:部门名+项目名。使用import命令导入包。java面向对象程序设计9第3章 对象和封装封装概念把数据和方法包装进类中,隐藏属性和具体的实现,常共同被称作是封装。封装的结果是一个同时带有特征和行为的数据类型。我们前边所完成的水果项类的定义就是封装的一部分。同样,成员变量与成员方法以及对应的private修饰,公共的get/set方法均为封装的一部分。 java面向对象程序设计10 private关键字private关键字是私有化修饰符,访问权限修饰符的一种,只有在本类中才能访问的成员,外界无法访问,是封装
9、类中成员变量常用的修饰符。private用于修饰成员,包括成员变量与成员方法。java面向对象程序设计11 this关键字this一般出现在类的一个方法的定义当中,代表当前对象的引用。我们通常用其将本对象中的成员与其他作用域成员区分开来。当一个类定义好之后,如果不创建对象this是没有意义的。一个类可以有多个对象。每个对象都有各自的属性值,各个对象的方法均是类中定义的那个方法逻辑。定义中的this就代表调用方法的这个对象。java面向对象程序设计12第四章 继承1.继承的定义:继承就是扩展一个已有的类,该类的属性和方法来自已有的那个类,而创建新的类的过程就叫继承,这个新的类就是子类,而原有的类
10、叫父类;2.继承时需要注意访问控制权限,如private 对属性的访问控制;3.子类可以继承父类的属性和方法,但是构造不能继承;4.继承的好处: 子类中相同的属性和方法,一般不用重复实现,而只需要继承自父类,通过继承,在子类中覆写即可;5.内存叠加:在生成构造中,默认地调用了父类的构造器,因此在创建子类对象的时候,默认地包含了一个父类的对象,并为这个父类的对象划分了空间,但是子类仍然创建了完整的对象,因此这个子类的对象在内存上的实现,就是与父类的对象的内存空间相互重叠或者叫做想接,但是只是产生了一个完整的子类对象;java面向对象程序设计136.优秀的软件的特点主要包含两个大点:复用性、单一职
11、责性;7.java中只允许单继承,就是说一个类只能有一个父类,java中的多实现是由interface接口实现的;8.继承的优点:代码复用9.java中的默认继承:所有的类都是object的子类,因此java中的所有的类都包含了object类中的public方法和属性;10.java.lang.object:现阶段主要掌握 public string tostring()、 public boolean equals(object obj) 方法,方法的具体用法可以意会不能言传;11.注意区别重载和重写之间的关系: 可意会不可言传;12.this super的几种方式:this() this
12、. 与 super . 和super()13.final :修饰类表示这个类不能被继承,修饰方法表示不能重写,修饰变量表示该变量的值为常量14.访问修饰符private protected public 和默认修饰符在:同类、同包不同类(有继承关系和没有继承关系)以及不同包(有继承关系和没有继承关系) 的访问形式15.static的含义和注意16.代码块和static 代码块:在初始化是后的区别17.内部类的几种、匿名内部类的实现方式java面向对象程序设计14第五章 多态什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也
13、是最重要的知识点。多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。多态的作用:消除类型之间的耦合关系。现实中,关于多态的例子不胜枚举。比方说按下 f1 键这个动作,如果当前在 flash 界面下弹出的就是 as 3 的帮助文档;如果当前在 word 下弹出的就是 word 帮助;在 windows 下弹出的就是 windows 帮助和支持。同一个事件发生在不同的对象上会产生不
14、同的结果。下面是多态存在的三个必要条件,要求大家做梦时都能背出来!java面向对象程序设计15多态存在的三个必要条件一、要有继承;二、要有重写;三、父类引用指向子类对象。 多态的好处:1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆circle类工作,对其他任何圆形几何体,如圆环,也同样工作。2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。3.接口性(
15、interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类shape规定了两个实现多态的接口方法,computearea()以及computevolume()。子类,如circle和sphere为了实现多态,完善或者覆盖这两个接口方法。4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。java中多态的实现方式:接口实现,继承父类进行方法重写
16、,同一个类中进行方法重载。java面向对象程序设计16第六章 接口 接口的定义: 使用interface来定义一个接口。接口定义与类的定义类似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成,定义接口的基本语法如下:修饰符 interface 接口名 extends 父接口名列表 public static final 变量; public abstract 方法; 修饰符:可选参数,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。 接口名:必选参数,用于指定接口的名称,接口名必须是合法的java标识符。一般情况下,要求首字母大写。 exten
17、ds父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。 方法:接口中的方法只有定义而没有被实现。 注意:接口名一般都有一个不成文的规定,即第一个字母为i。java面向对象程序设计17例:public interface ijisuan public void qiumianji(); public void qiuzhouchang(); public interface ixingzhuang public void hua(); public abstract class sibianxing implements ijisua
18、n, ixingzhuang public void hua() system.out.println(正在画一个四边形); java面向对象程序设计18public class juxing extends sibianxing private int a; private int b; public juxing(int a,int b) this.a = a; this.b = b; override public void qiumianji() double s = a*b; system.out.println(s); override public void qiuzhoucha
19、ng() double c = a+b+a+b; system.out.println(c); public void hua() system.out.println(正在画一个矩型); java面向对象程序设计19 可以对比看出接口用关键字interface声明。接口的地位等同于class,接口中的所有方法都是抽象方法。接口中在定义方法的时候,可以使用abstract关键字,也可以省略abstract关(大多数时候都是省略的),方法仍是抽象的,不能有实现的花括号。接口和抽象类的功能类似,接口也不能实例化,可以将接口看作是一种特殊的抽象类全是抽象方法)。接口的多态用法和抽象类也类似,接口类型
20、的引用可以指向实现了这个接口的类的对象。提到接口,就会联想到抽象,此时大家都会感觉接口和抽象很相似,那么他们有什么区别?1.接口本身就是抽象的,所以他的方法必须全部都是抽象的方法,但是抽象类中的方法可以是抽象的,也可以是具体的,详见前一篇内容对抽象类的解释。2.一个类可以实现接口,(类似于父子类之中用extends继承)采用关键字implement。大家都知道java是单继承的,但是一个类可以实现多个接口,如上文中写的sibianxing就实现了ijisuan, ixingzhuang两个接口。3.如果一个类实现了一个接口或者多个接口,如果这个类是抽象类,那么这个类就不用实现接口的全部内容,如
21、上例中sibianxing定义的就是一个abstract抽象类,所以不用实现ijisuan, ixingzhuang两个接口中所有的内容。4.同理于3,如果一个类实现了一个接口或者多个接口,如果这个类不是抽象类,是一个具体类的话,那么这个类就必须实现接口的全部内容,如上例中的juxing,虽然juxing是继承的sibianxing,但是sibianxing是一个抽象类,并没有实现所有接口的内容,而且juxing没有定义abstract,是一个具体类,那么juxing就必须把ijisuan, ixingzhuang两个接口中所有的内容全部实现,也就是如上例中所写。java面向对象程序设计20第
22、七章 异常 在 java 中,所有的异常都有一个共同的祖先 throwable(可抛出)。throwable 指定代码中可用异常传播机制通过 java 应用程序传输的任何问题的共性。 throwable: 有两个重要的子类:exception(异常)和 error(错误),二者都是 java 异常处理的重要子类,各自都包含大量子类。 error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 jvm(java 虚拟机)出现的问题。例如,java虚拟机运行错误(virtual machineerror),当 jvm 不再有继续执
23、行操作所需的内存资源时,将出现 outofmemoryerror。这些异常发生时,java虚拟机(jvm)一般会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如java虚拟机运行错误(virtual machineerror)、类定义错误(noclassdeffounderror)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 java中,错误通过error的子类描述。 java面向对象程序设计21exce
24、ption(异常):是程序本身可以处理的异常。 exception 类有一个重要的子类 runtimeexception。runtimeexception 类及其子类表示“jvm 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(nullpointerexception、arithmeticexception)和 arrayindexoutofboundexception。 注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。 java面向对象程序设计22通常,java的异常(包括exception和error)分为可查的异常(chec
25、ked exceptions)和不可查的异常(unchecked exceptions)。 可查异常(编译器要求必须处置的异常):正确的程序在运行中,很容易出现的、情理可容的异常状况。可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常状况,就必须采取某种方式进行处理。 java面向对象程序设计23除了runtimeexception及其子类以外,其他的exception类及其子类都属于可查异常。这种异常的特点是java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。 不可查
26、异常(编译器不要求强制处置的异常):包括运行时异常(runtimeexception与其子类)和错误(error)。 exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。 java面向对象程序设计24运行时异常:都是runtimeexception类及其子类异常,如nullpointerexception(空指针异常)、indexoutofboundsexception(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。 运行时异常的特点是java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。 java面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁学院《科技文献检索与论文写作》2021-2022学年第一学期期末试卷
- 汽车改装技术 课件 4.2加装迎宾踏板和休闲踏板
- 2024年度旅游业务合作与运营合同协议2篇
- 手术室专科护士培训演讲
- xxx智慧停车场建设项目可行性研究报告
- 2024年办公室内勤年终工作总结范文
- 电工培训课件
- 肝病合并糖尿病的诊治
- 管理软件推广活动方案
- 银行培训公开课
- 图解八四柱八字ppt课件
- 国家公务员制度课件
- 银行业信息科技风险监管现场检查手册
- PSC检查英语口语
- xx旅行社与xx汽车公司合作协议
- 违规代客理财及同机操作的案例介绍
- 生化知识点整理(特别全)
- 装配钳工培训教学大纲
- 工作票(第一种、第二种)样本
- 《读中国》朗诵稿
- 人教版 九年级 道德与法治下册(教学设计 教案)第五课 少年的担当第2课时 少年当自强
评论
0/150
提交评论