面向对象程序设计(Java)254_第1页
面向对象程序设计(Java)254_第2页
面向对象程序设计(Java)254_第3页
面向对象程序设计(Java)254_第4页
面向对象程序设计(Java)254_第5页
已阅读5页,还剩249页未读, 继续免费阅读

下载本文档

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

文档简介

信息安全工程学院©SuoWang2016面向对象程序设计Java

面向对象程序设计Java索望Email:suowang@网络存储密码:wlgcx20031讨论Java是什么?Java能做什么?学了Java有什么用?信息安全工程学院©SuoWang2016面向对象程序设计Java2课程说明课程性质:必修课时:讲授(30学时)+上机(18学时)教学大纲与授课计划成绩(过程化考核)平时(70%)考勤、作业、平时表现、上机表现与上机报告等(占平时成绩的40%)过程化考试(占平时成绩的60%)期末(30%)信息安全工程学院©SuoWang2016面向对象程序设计Java

3课程目标首要目标学习并掌握Java编程语言:语法、规则、模式以及代码风格等。理解面向对象编程思想,掌握面向对象编程的过程、方法与技术;学习使用JDK类库以及其他第三方的类库具备一定的Java项目实际开发能力;次要目标深入理解、灵活应用面向对象编程技术理解Java虚拟机相关知识信息安全工程学院©SuoWang2016面向对象程序设计Java

4课程安排面向对象开发方法概述Java程序设计入门Java语言基础Java面向对象编程基础与进阶异常处理多线程Java集合JavaI/OJava常用类Java类与对象生命周期信息安全工程学院©SuoWang2016面向对象程序设计Java

5教材与参考手册教材面向对象程序设计Java最重要的参考手册JavaAPIDocumentation/javase/6/docs/api/

信息安全工程学院©SuoWang2016面向对象程序设计Java

6参考书籍Java编程思想(ThinkinginJava)作者:

[美]BruceEckel

译者:

侯捷Java核心技术:卷ⅠII作者:

昊斯特曼

/

GaryCornellEffectiveJava中文版作者:

[美]JoshuaBloch

译者:

潘爱民信息安全工程学院©SuoWang2016面向对象程序设计Java

7参考网站/technetwork/java/index.html

/

/developerworks/cn/java/

/index.jspa

/

/

/信息安全工程学院©SuoWang2016面向对象程序设计Java

8Chapter1面向对象开发方法概述软件开发方法结构化开发方法面向对象开发方法面向对象程序设计的核心概念小结信息安全工程学院©SuoWang2016面向对象程序设计Java

9软件开发方法软件开发的生命周期需求分析软件设计概要设计详细设计软件编码软件测试软件部署软件维护信息安全工程学院©SuoWang2016面向对象程序设计Java

10软件开发方法优良软件系统应具备的特点信息安全工程学院©SuoWang2016面向对象程序设计Java

11可重用性可扩展性可维护性软件开发方法通常将软件系统划分为多个子系统进行设计与开发信息安全工程学院©SuoWang2016面向对象程序设计Java

12结构稳定性内聚性可扩展性可组合性松耦合子系统特点子系统特点结构化开发方法SASD方法,E.Yourdon和L.L.Constantine于1978年提出SA(StructureAnalysis)->SD(StructureDesign)->SP(StructureProgramming)按功能划分软件结构,将功能看成是:自顶向下设计,自下向上编码程序主体是方法(函数),方法是最小的功能模块信息安全工程学院©SuoWang2016面向对象程序设计Java

13功能输入数据输出数据结构化开发方法缺陷:可维护性和可扩展性不强模块间松耦合性不高信息安全工程学院©SuoWang2016面向对象程序设计Java

14面向对象开发方法概念:是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学包括:面向对象分析(Object-OrientedAnalysisOOA)面向对象设计(Object-OrientedDesignOOD)面向对象编程(Object-OrientedProgrammingOOP)信息安全工程学院©SuoWang2016面向对象程序设计Java

15面向对象开发方法面向对象程序开发传统的程序开发主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令;面向对象程序开发中的程序则是包含各种独立而又互相调用的对象的集合;面向对象程序开发中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,或者说是负有责任的角色。信息安全工程学院©SuoWang2016面向对象程序设计Java

16面向对象开发方法面向对象分析与设计建立模拟问题领域的对象模型自底向上的抽象把问题领域中的事物抽象为具有特定属性和行为的对象把具有相同属性和行为的对象抽象为类将具有共性的类的共性抽象到父类自顶向下的分解统一建模语言(UML)应用于面向对象分析与设计信息安全工程学院©SuoWang2016面向对象程序设计Java

17Chapter1面向对象开发方法概述软件开发方法结构化开发方法面向对象开发方法面向对象开发的核心与概念小结信息安全工程学院©SuoWang2016面向对象程序设计Java

18面向对象开发的核心思想与概念对象(Object)类(Class)和类型(Type)消息(Message)和服务(Service)接口(Interface)抽象(Abstract)封装(Encapsulation)继承(Inheritance)多态(Polymorphism)信息安全工程学院©SuoWang2016面向对象程序设计Java

19对象对象是对问题领域(真实世界)中的事物(包括实体和概念)的抽象;抽象出事物的属性/状态和行为构成软件对象,在软件系统中模拟问题领域的事物。软件程序中对象是一组变量和相关方法的集合,其中变量表明对象的属性/状态,方法表明对象所具有的行为。信息安全工程学院©SuoWang2016面向对象程序设计Java

20问题领域对象属性/状态:

红色

2档、20km/h

行为:加速、换档、刹车软件对象抽象对象对象的特性万物皆为对象,包括实体和概念每个对象都是唯一的对象具有属性和行为对象具有状态对象都属于某个类信息安全工程学院©SuoWang2016面向对象程序设计Java

21信息安全工程学院©SuoWang2016面向对象程序设计Java

22问题领域对象属性/状态:

红色

2档、20km/h

行为:加速、换档、刹车软件对象属性/状态:

绿色5档、120km/h

行为:加速、换档、刹车class

汽车{ String颜色;

int

档位;

float

当前速度;

void

加速(){}

void

换档(int档位){}

void

刹车(){}}类UML类图类类:定义了某一特定类型的所有对象的共同属性和行为,是对一类具有相同特性的对象的总体描述。类体中的组成:变量和方法。变量:指对象的属性或状态。方法:指对象的功能。类是对象的模板,对象是类的一个实例。类是Java程序的基本组成单元,表示一种数据类型。信息安全工程学院©SuoWang2016面向对象程序设计Java

23类和对象的对比类是一个定义一类对象的属性和操作并且在设计的时候产生的模板或蓝图信息安全工程学院©SuoWang2016面向对象程序设计Java

24类对象对象是一个关于类的运行实例,它占用内存并且拥有一定的生命周期。类和对象的对比类和对象的对应关系信息安全工程学院©SuoWang2016面向对象程序设计Java

25……Carcar1;Carcar2;……CarcarN;classCar消息和服务以面向对象开发的程序中有各种对象在协同工作,对象之间使用消息机制进行相互通信,并为其他对象提供服务。对象提供的服务是由对象的方法来实现,发送消息实际上就是调用对象的方法。消息的组成消息发送的目标对象操作的方法名相关参数信息安全工程学院©SuoWang2016面向对象程序设计Java

26cardriver换档(int档位)接口接口用于对外提供服务现实中的接口通常是实体,比如:汽车方向盘、换档杆、电源插座、键盘按钮……面向对象中的接口抽象概念,表示系统向外提供的所有服务对象作为服务提供者,通过接口提供服务对象中定义的公有方法声明构成了对象的接口使用接口的优点提高了松耦合性和可扩展性Java语言中定义有接口类型(interface)信息安全工程学院©SuoWang2016面向对象程序设计Java

27UML类图抽象(Abstract)抽象:从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。(百度百科)对问题领域中的对象进行概括,抽出这一类对象的公共性质(属性/行为)并进行描述。如何实现抽象:对问题领域对象进行分析,提取其属性和行为先注意问题的本质及描述,其次是实现过程或细节。抽象要有选择性的忽略信息安全工程学院©SuoWang2016面向对象程序设计Java

28问题领域对象属性/状态:

红色

2档、20km/h

行为:加速、换档、刹车软件对象抽象抽象面向对象编程中抽象的体现从问题领域的事物到软件对象的抽象从对象到类的抽象从子类到父类的抽象Java语言中的抽象抽象过程抽象的(abstract)所有编程语言都提供抽象机制。可以认为,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。

——《Java编程思想》信息安全工程学院©SuoWang2016面向对象程序设计Java

29封装封装一种将抽象性的接口的实现细节部份包装、隐藏起来的方法。隐藏对象的属性和实现细节,仅仅对外公开接口。封装的优点便于使用者正确、方便地理解和使用系统,防止使用者错误的修改属性建立各系统之间的松耦合关系,提高系统的独立性提高软件的可重用性降低构建大型系统的风险信息安全工程学院©SuoWang2016面向对象程序设计Java

30封装封装的基本要求:有一个特定的边界:所有的内部变化都限制在此边界内(类定义的{});有外部接口:此对象利用它与其它对象发生关联(public成员);有特定的访问权限:在对象外部不能访问或修改受保护的内部实现细节(private成员)。划分访问控制的原则对外提供简洁的接口把所有属性藏起来信息安全工程学院©SuoWang2016面向对象程序设计Java

31继承真实世界中的继承关系信息安全工程学院©SuoWang2016面向对象程序设计Java

32脊椎动物门哺乳纲两栖纲……灵长目长鼻目……类人猿科……人类继承面向对象程序设计中的继承基于已有的类创造一个新类。新类(子类/派生类)继承(extends)了父类(超类/基类)的属性和方法,同时可以扩展出新的属性和方法,或者覆盖(Overriding)父类的方法。子类与父类之间是“isakindof”的关系。子类与父类具有相同的类型。信息安全工程学院©SuoWang2016面向对象程序设计Java

33继承子类是作为父类的扩充或修正而创造的一个新类。信息安全工程学院©SuoWang2016面向对象程序设计Java

34汽车父类轿车越野车跑车子类多态含义:“同名”但“不同的功能实现形式”。应用体现:即在父类中提供一种方法的实现,但可以在子类对该方法加以重写并给出自己的实现但要求保持功能的实现形式相同。作用:利用对象的多态特性,可以在解决某一类问题时提出一般的解决方法但允许子类根据自己的问题的具体要求加以自己的特殊实现方式。实现的两种方法采用接口:类实现接口的成员采用继承:继承的子类可以覆盖其上层基类的成员信息安全工程学院©SuoWang2016面向对象程序设计Java

35多态Example:动态绑定Java虚拟机在运行时(而不是编译时)确定绑定的子类指针信息安全工程学院©SuoWang2016面向对象程序设计Java

36练习针对下列程序的业务处理需要,抽象出对应的软件对象。模拟银行柜台业务处理程序文件系统信息安全工程学院©SuoWang2016面向对象程序设计Java37Java入门索望Email:suowang@网络存储密码:wlgcx2003信息安全工程学院©SuoWang2016面向对象程序设计Java

38Java入门提纲Java简介Java开发与运行环境JDK、JRE集成化开发环境(Eclipse)第一个Java应用程序创建源文件编译、运行程序信息安全工程学院©SuoWang2016面向对象程序设计Java

目标了解Java了解Java开发与运行环境逐步熟练使用Eclipse第一个Java应用程序了解Java源程序的结构,尝试编写Java程序掌握编译、运行、发布程序39Java简介Java是什么?信息安全工程学院©SuoWang2016面向对象程序设计Java

Java是一个软件开发技术平台Java编程语言Java程序开发环境(JDK-JavaDevelopmentKit)API、DevelopmentTools、JREJava程序运行环境(JRE-

JavaRuntimeEnvironment)一系列的Java程序开发技术40信息安全工程学院©SuoWang2016面向对象程序设计Java

Java简介SunMicrosystems于1990’s开发设计师:JamesA.Gosling最初作为消费性电子产品(ConsumerElectronics)的编程语言Oak、Java为什么叫“Java”?JavaHistory/technetwork/java/javase/overview/javahistory-timeline-198369.html

Internet的发展导致了Java的流行41信息安全工程学院©SuoWang2016面向对象程序设计Java

Java简介Java平台的演变Java平台最新版本为:8.042信息安全工程学院©SuoWang2016面向对象程序设计Java

Java简介Java语言的特点简单的(Simple)面向对象的(ObjectOriented)分布式的(Distributed)、解释的(Interpreted)健壮的(Robust)、安全的(Secure)结构中立的(ArchitectureNeutral)可移植的(Portable)高效能的(HighPerformance)多线程的(Multithreaded)、动态的(Dynamic)43信息安全工程学院©SuoWang2016面向对象程序设计Java

Java简介解释执行平台独立,可移植性好(Write-Once-Run-Anywhere)Java虚拟机(JavaVirtualMachine-JVM)44Java开发与运行环境JDK

:

Java

DevelopmentKit(Java开发工具包)JDK是Java平台的核心,JRE(JavaRuntimeEnvironment,Java运行环境)Java开发工具(javac/java/jdb等)Java基础的类库(即JavaAPI包括rt.jar)信息安全工程学院©SuoWang2016面向对象程序设计Java

45Java开发与运行环境JavaSE平台JDKJREAPIJVM信息安全工程学院©SuoWang2016面向对象程序设计Java

46Java开发与运行环境Java开发工具javac:Java编译器,用来将Java程序编译成Bytecode。java:Java解释器,执行已经转换成Bytecode的Java应用程序。jdb:Java调试器,用来调试Java程序。javap:反编译,将类文件还原回方法和变量。javadoc:文档生成器,创建HTML文件。appletviwer:Applet解释器,用来解释已经转换成Bytecode的Java小程序。信息安全工程学院©SuoWang2016面向对象程序设计Java

47Java开发与运行环境JRE:JavaRuntimeEnvironment(Java运行时环境)。所有的Java程序都要在JRE下才能运行。JRE包括JVM和Java核心类库和支持文件。与JDK相比,JRE不包含开发工具——编译器、调试器和其它工具。信息安全工程学院©SuoWang2016面向对象程序设计Java

48Java开发与运行环境JavaAPI(ApplicationProgrammingInterface,应用程序编程接口)JavaAPI是前辈们写好的一些JavaClass,包括一些重要的语言结构以及基本图形,网络和文件I/O等等我们在编写自己的程序中,调用前辈们写好的这些Class,来作为我们自己开发的一个基础。现在还有越来越多的性能更好或者功能更强大的第三方类库供我们使用。信息安全工程学院©SuoWang2016面向对象程序设计Java

49Java简介JavaVirtualMachine(JAVA虚拟机)JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM的主要工作是解释自己的指令集(即字节码)并映射到本地的CPU的指令集或OS的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。信息安全工程学院©SuoWang2016面向对象程序设计Java

50Java开发与运行环境Java平台(JDK)版本划分JavaStandardEdition(JavaSE)Java平台标准版:它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaEnterpriseEdition(JavaEE)Java平台企业版:帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaMicroEdition(JavaME)Java平台微型版:为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。信息安全工程学院©SuoWang2016面向对象程序设计Java

51Java开发与运行环境下载JDK/technetwork/java/javase/downloads/index.html

安装JDK运行安装程序,安装JDK到指定目录配置环境变量将JDK的开发工具指令配置为系统命令信息安全工程学院©SuoWang2016面向对象程序设计Java

52Java语言的特性IDE(IntegratedDevelopmentEnvironment-集成化开发环境)Eclipse为本课程首选IDE信息安全工程学院©SuoWang2016面向对象程序设计Java

53第一个Java应用程序开发与运行Java应用程序的基本步骤信息安全工程学院©SuoWang2016面向对象程序设计Java

InstallJDKSetenvironmentvariablesInstallIDESourcefile(*.java)compilerBytecodefile(*.class)Programmodify出错成功保存AppletRichClientAppJ2EEServerAppJ2MEApp安装开发运行Interpreter54第一个Java应用程序HelloWorld程序第一个Java应用程序包含如下内容:类的声明main方法Java关键字与标识符编程规范信息安全工程学院©SuoWang2016面向对象程序设计Java

55第一个Java应用程序HelloWorld程序,输出“HelloWorld!”信息安全工程学院©SuoWang2016面向对象程序设计Java

56第一个Java应用程序类的声明类声明的基本结构:[public]class

类名{}class是声明Java类的关键字public表示此类为公有类,可被公开访问类名须符合Java标识符规范类名的每个单词的第一个字母大写一个Java源文件可包含多个Java类,但是源文件的文件名(不包括.java后缀名)必须与源文件中的公有类同名一个Java源文件中能包含几个公有类呢?信息安全工程学院©SuoWang2016面向对象程序设计Java

publicclassHelloWorld{}classHelloWorld{}57第一个Java应用程序main方法main方Java应用程序的入口声明main方法的格式:publicstaticvoid

main(Stringargs[])

固定格式,不能修改信息安全工程学院©SuoWang2016面向对象程序设计Java

58第一个Java应用程序编译与运行Java程序非IDE编译:javac指令运行:java指令IDE直接编译运行信息安全工程学院©SuoWang2016面向对象程序设计Java

59第一个Java应用程序标识符:对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)包括:类名、变量名、方法名、文件名等。规则:Java语言中,标识符是以字母、下划线(_)或美元符($)开始的一个字符序列,后面可以跟字母、下划线、美元符、数字。不能用关键字或保留字作为标识区分大小写合法的标识符identifieruserName_sys_value$change非法的标识符2mail room#class信息安全工程学院©SuoWang2016面向对象程序设计Java

60第一个Java应用程序Java编程规范类名或接口名单词首字母大写,其他字母小写Car、HelloWorldApp方法名和变量名首个单词小写,其他单词首字母大写,其他字母小写color、carNumber、brake()、sayHello()包名用小写字母lang、io、awt常量名全部字母大写PI/technetwork/java/codeconv-138413.html

信息安全工程学院©SuoWang2016面向对象程序设计Java

61小结思考题信息安全工程学院©SuoWang2016面向对象程序设计Java

62Java语法基础索望Email:suowang@网络存储密码:wlgcx2003信息安全工程学院©SuoWang2016面向对象程序设计Java

Java语法基础本章提纲变量与数据类型基本数据类型与引用类型按作用域对变量进行分类静态变量与实例变量操作符流程控制信息安全工程学院©SuoWang2016面向对象程序设计Java

变量与数据类型变量在程序设计中,变量表示一种存储数据的载体。变量包括变量数据类型、变量名以及变量作用域。Java中声明变量的基本格式:[Modifier]数据类型变量名[=initValue];Modifier包括:public、private、protected、final、static、volatile变量名不能使用Java关键字信息安全工程学院©SuoWang2016面向对象程序设计Java

privateStringcolor;protectedintgears=1;privatestaticfloattotalNumber;Carcar=null;变量与数据类型变量初始化声明变量后,必须进行初始化后再使用常量用final关键字修饰的变量为常量常量一旦赋值就不能再修改信息安全工程学院©SuoWang2016面向对象程序设计Java

finalintHOURS=24;

staticfinalTOTALGEARS=5;

inthours;System.out.println(hours);

×变量与数据类型数据类型指明变量能包含的值以及如何操作该变量Java的数据类型分为两大类信息安全工程学院©SuoWang2016面向对象程序设计Java

变量与数据类型基本数据类型(PrimitiveDataTypes)8种,所占内存空间是固定的,即其取值范围也是固定的信息安全工程学院©SuoWang2016面向对象程序设计Java

变量与数据类型boolean类型取值:true/false默认值为falseJVM用整数零表示false,非零整数表示true不允许把整数或null赋值给boolean变量信息安全工程学院©SuoWang2016面向对象程序设计Java

booleanisMarried=0;×booleanisFemale=null;

×

变量与数据类型数据类型所占内存空间取值范围byte1byte-128~127short2byte-32768~32767int4byte-2147483648~2147483647(约20亿)long8byte-9223372036854775808~9223372036854775807信息安全工程学院©SuoWang2016面向对象程序设计Java

byte、short、int和long都表示有符号整数首位0对应十进制正整数,首位1对应十进制负数变量与数据类型char类型表示单个字符charc=‘a’;//指定变量c为char型,且赋初值为'a'采用Unicode编码,2字节(16bit),可表示216=65535个字符常见的编码方式ASCII编码、ISO-8859-1编码、GB2312编码、GBK编码Unicode编码、UTF编码特殊转义字符\b退格;\t制表;\n换行;\r回车\”双引号;\’单引号;\\反斜杠信息安全工程学院©SuoWang2016面向对象程序设计Java

变量与数据类型float和double浮点数类型float:4byte,32位double:8byte,64位信息安全工程学院©SuoWang2016面向对象程序设计Java

publicclassAssign{publicstaticvoidmain(Stringargs[]){intx,y;byteb=6;floatz=1.234f;doublew=1.234;booleanflag=true;charc;c=‘A‘;x=12;y=300;......}}变量与数据类型基本数据类型之间的转换整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级:byte,short,char->int->long->float->double自动类型转换从低级类型直接转换到高级类型byteb;inti=b;longl=b;由char型转换为整型时,转换为Unicode码值。强制类型转换将高级类型转换为低级类型时就需要强制类型转换inti=99;byteb=(byte)i;charc=(char)i;floatf=i;信息安全工程学院©SuoWang2016面向对象程序设计Java

变量与数据类型引用类型(ReferenceDataTypes)类引用类型接口引用类型数组引用类型引用类型变量表示一个对象的引用默认初始化值为null信息安全工程学院©SuoWang2016面向对象程序设计Java

Dolldoll;//Doll类型变量java.lang.RunnablemyThread;//Runnable类型变量int[]intArray;

//数组变量变量与数据类型基本类型与引用类型的区别基本类型是简单的数据结构,像整数,字符引用类型所引用的实例能表示任意一种复杂的数据结构(类,定义了变量和方法)基本类型仅表示数据类型,而引用类型引用的实例包括了数据类型和操作方法JVM处理两种类型的变量也是不同的基本类型变量指向的内存中直接存放的是数据引用类型变量指向的内存中存储的是一个内存地址,这个地址指向某个实例对象信息安全工程学院©SuoWang2016面向对象程序设计Java

JVM数据区1010200020002001“Hello”“Hello”信息安全工程学院©SuoWang2016面向对象程序设计Javaintnum=10;inti=num;Stringname=“Hello”;Strings=name;Strings1=newString(“Hello”)Println(name==s)Println(s==s1);Name++;100010011002100315631564156520002001numinamess1变量与数据类型信息安全工程学院©SuoWang2016面向对象程序设计Java

引用类型ExamplepublicclassPerson{longid;Stringname;shortage;charsex;

Personmother;}Personmary=newPerson();=“Mary”;Persontom=newPerson();=“Tom”;tom.mother=mary;变量与数据类型变量的作用域指变量的存在范围,同时也决定了变量的生命周期变量的生命周期是从创建到销毁按照作用域,变量可分为以下类型成员变量:在类中声明,作用域为整个类局部变量:在方法或代码块中声明,同样其作用域为方法或代码块局部变量不能用static、private、protected、public等修饰,只能使用final修饰方法参数:方法或构造方法的参数,作用域是方法或构造方法异常处理参数:作用域为catch(Exceptione)代码区信息安全工程学院©SuoWang2016面向对象程序设计Java

publicclassCar{

privateStringcolor; privateintcurrentGear; privatefloatcurrentSpeed;

publicCar(StringinitColor,intgear,floatspeed){ color=initColor; currentGear=gear; currentSpeed=speed; } publicvoidchangeGear(intnewGear){ currentGear=newGear; } publicvoidbrake(){

intbrakePower=0; if(currentSpeed%10==0){ brakePower=(int)currentSpeed/10; }else{ brakePower=(int)(currentSpeed/10)+1; } for(inti=0;i<brakePower;i++){ currentSpeed=currentSpeed-10; if(currentSpeed<0){ currentSpeed=0; } System.out.println("当前速度为:"+currentSpeed); }}}变量与数据类型静态变量与实例变量类的成员变量分两类static修饰的成员变量,称为类变量或静态变量没有static修饰的成员变量,叫实例变量信息安全工程学院©SuoWang2016面向对象程序设计Java

publicclassCar{ privateStringcolor; privateintcurrentGear; privatefloatcurrentSpeed;//实例变量

privatestaticinttotalGears;//静态变量或类变量

}变量与数据类型静态变量在内存中只有一个JVM在加载类时为静态变量分配内存位于方法区,类的所有实例共享一个静态变量可直接通过类名访问其生命周期取决于类的生命周期实例变量每个实例对象都有自己实例变量副本JVM在创建实例对象时为其实例变量分配内存实例变量位于堆区实例变量的生命周期取决于实例对象的生命周期信息安全工程学院©SuoWang2016面向对象程序设计Java

变量与数据类型成员变量与局部变量同名对象的默认引用-this但一个实例对象创建好后,JVM会给它分配一个指向自身的引用:this所有对象默认的引用名都是this信息安全工程学院©SuoWang2016面向对象程序设计Java

publicclassCar{ privateStringcolor; privateintcurrentGear; privatefloatcurrentSpeed; publicCar(Stringcolor,intgear,floatspeed){

color=color; currentGear=gear; currentSpeed=speed; }}publicclassCar{ privateStringcolor; privateintcurrentGear; privatefloatcurrentSpeed; publicCar(Stringcolor,intgear,floatspeed){

this.color=color; currentGear=gear; currentSpeed=speed; }}变量与数据类型this的使用在构造方法中用this调用另外一个构造方法在实例方法中,用this调用被同名局部变量屏蔽的实例成员变量在实例方法中,访问当前实例对象的引用信息安全工程学院©SuoWang2016面向对象程序设计Java

packagech3;publicclassThisDemo{ privateStringname; publicThisDemo(){ name="this"; System.out.println("CreatingThisDemoinstance!"); } publicThisDemo(Stringname){

this();

=name; } publicStringgetName(){

return; } publicstaticvoidmain(String[]args){ ThisDemotd=newThisDemo(); System.out.println("Theinstancenameis:"+td.getName()); }}变量与数据类型参数传递方法之间进行调用时会传递参数参数传递的区别基本类型的参数:传值引用类型的参数:传引用信息安全工程学院©SuoWang2016面向对象程序设计Java

packagech3;publicclassPass{ staticintj=20;publicvoidamethod(intx){ x=x*20; j=j*20;} publicstaticvoidmain(String[]args){ inti=10; Passpass=newPass(); pass.amethod(i); System.out.println(i); System.out.println(j); }}变量与数据类型变量初始化与默认值成员变量可由构造方法初始化;局部变量必须显示初始化才能使用;变量的默认初始化值整数型(byte、short、int、long)默认值为0;float默认初始化值为0.0fdouble默认初始化值为0.0dchar默认初始化值为”\u0000’’boolean的初始化值为false引用类型与数组的默认初始化值为null信息安全工程学院©SuoWang2016面向对象程序设计Java

变量与数据类型直接数直接赋值给变量的具体数据7种类型的直接数int型、long型、float型、double型、boolean型、char型、String型信息安全工程学院©SuoWang2016面向对象程序设计Java

inthours=24;Stringname=“Tom”Java操作符操作符算术运算符:+,―,*,/,%,++,――关系运算符:>,<,>=,<=,==,!=布尔逻辑运算符:!,&&,||位运算符:>>,<<,>>>,&,|,^,~赋值运算符:=,及其扩展赋值运算符如+=,―=,*=,/=等。条件运算符:?:其它:包括分量运算符

·

,实例运算符instanceof,内存分配运算符new,强制类型转换运算符(类型),方法调用运算符

()等。操作符的优先级信息安全工程学院©SuoWang2016面向对象程序设计Java

Java操作符一元整型操作符二元整型操作符比较操作符逻辑操作符&&和||是按照“短路”方式求值&和|不按“短路”方式求值>>>用0填充最高位,>>用符号位填充最高位三元操作符字符串连接操作符“+”操作符“==”与对象的equals()方法instanceof操作符信息安全工程学院©SuoWang2016面向对象程序设计Java

流程控制分支语句循环语句流程跳转语句信息安全工程学院©SuoWang2016面向对象程序设计Java

分支语句if-else语句

if(boolean-expression1)

{ statements1;} elseif(boolean-expression2){statements2}…else{statementsN;}信息安全工程学院©SuoWang2016面向对象程序设计Java

块语句分支语句表达式boolean-expression是任意一个返回布尔数据类型的表达式,而且必须是(比C或C++要严格)。与C或C++一样,每个单一语句后面都要有分号。为了增强程序的可读性,应将if或else后的语句用{}括起来。else子句是任选的,不能单独作为语句使用,它必须和if语句配对使用,并且总是与离它最近的if配对。信息安全工程学院©SuoWang2016面向对象程序设计Java

inti1=123;inti2=456;if(i1>i2){System.out.println(“Thebiggeroneis:”+i1);}else{System.out.println(“Thebiggeroneis:”+i2);}分支语句switch语句(多分支语句)

switch(expression) { casevalue1: {statements1; break; } …… casevalueN: { statementsN; break; } [default: { defaultStatements; }]}信息安全工程学院©SuoWang2016面向对象程序设计Java

分支语句表达式expression的返回值类型必须是这几种类型之一:int、byte、char、short。(Java7加入了支持String类型)case子句中的值value1…valueN必须是常量,而且所有case子句中的值应是不同的。default子句是任选的。break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。如果某个case分支后没有break语句,程序将不再做比较而执行下一个分支。switch语句的功能可以用if-else语句来实现,但某些情况下,使用switch语句更简炼。信息安全工程学院©SuoWang2016面向对象程序设计Java

循环语句while循环语句(当型循环)

[initialization]//初始化条件while(termination){//循环条件

body;//循环体

[iteration;]//迭代,变更循环条件

}当表达式termination为true时,执行{}中的语句,否则终止循环。信息安全工程学院©SuoWang2016面向对象程序设计Java

tbfalsetrue循环语句do-while循环语句(直到型循环)

[initialization]//初始化条件

do{body;//循环体

[iteration;]//迭代,变更循环条件

}while(termination)//循环条件首先执行一遍{}中的语句,当表达式termination为true时,继续执行{}中的语句,否则终止循环。信息安全工程学院©SuoWang2016面向对象程序设计Java

tbfalsetrue循环语句for循环语句(另一种当型循环)

for(initialization;termination;iteration){ body;//循环体

}initialization//初始化条件

termination//循环条件

iteration//迭代,变更循环条件信息安全工程学院©SuoWang2016面向对象程序设计Java

tbodyfalsetrueiterainit循环语句for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。

for(inti=0,intj=10;i<j;i++,j--) { …… }在JavaSE5.0增加了foreach循环;

for(variable:collection){statement}信息安全工程学院©SuoWang2016面向对象程序设计Java

流程跳转语句break语句在switch语中,break语句用来终止switch语句的执行,使程序从整个switch语句后的第一条语句开始执行。break语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块后的第一条语句处执行。

breakBlockLabel;信息安全工程学院©SuoWang2016面向对象程序设计Java

流程跳转语句continue语句continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。它的格式为:continue;也可以用continue跳转到括号指明的外层循环中,这时的格式为continueouterLable;信息安全工程学院©SuoWang2016面向对象程序设计Java

流程跳转语句return语句return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:returnexpression;//当方法需要返回某种类型数据时return;//当方法的返回类型为void时单独一条return语句放在方法中间时,会产生编译错误,因为其后的语句将不会执行到。若真需要退出方法,可以通过将return语句嵌入某些语句(如if-else)来使程序在未执行完方法中所有语句时退出。信息安全工程学院©SuoWang2016面向对象程序设计Java

小结思考题信息安全工程学院©SuoWang2016面向对象程序设计Java

练习(1)

指出下面程序片段是否有错,错在哪儿信息安全工程学院©SuoWang2016面向对象程序设计Java

booleanisMale=0;byteb=324;floatf=23.1;publicvoidsomeMethod(){intkey;key=key+1;}publicstaticvoidmain(String[]args){Dolldoll;doll.speak();}publicclassCar{privateStringcarName;publicstaticvoidmain(String[]args){ System.out.println(carName);}}

类与对象索望Email:suowang@网络存储密码:wlgcx2003信息安全工程学院©SuoWang2016面向对象程序设计Java

102类与对象提纲类与对象(理解与应用,重点与难点)类的声明构造器this关键字package与import访问控制修饰符Java虚拟机运行时数据区(理解,难点,非重点)信息安全工程学院©SuoWang2016面向对象程序设计Java

103类与对象类与对象的辨析信息安全工程学院©SuoWang2016面向对象程序设计Java104类与对象类与对象的联系与区别类是对象的模板,对象是类的实例类是一类现实对象的Java代码抽象表示,对象则是现实对象在Java虚拟机中的具体表现类代表了一类具有共性的对象的类型类是代码,保存在硬盘,而对象则存在于内存中,并具有一定的生命周期类是抽象的,概括的,对象则是具体的,实际的信息安全工程学院©SuoWang2016面向对象程序设计Java105类的声明类的声明语法格式:class是声明Java类的关键字类名须符合Java标识符规范类名的每个单词的第一个字母大写一个Java源文件可包含多个Java类,但是源文件的文件名(不包括.java后缀名)必须与源文件中的公有类同名一个Java源文件中能包含几个公有类呢?信息安全工程学院©SuoWang2016面向对象程序设计Java

[类修饰符]class

类名

[extends父类,implements接口]

{ //成员变量 //成员方法//构造器等}106类的声明Java类可分为:外部类/顶层类嵌套类类修饰符类的组成成员变量成员方法构造器等信息安全工程学院©SuoWang2016面向对象程序设计Java107publicprotectedprivate

abstractstaticfinalstrictfp成员变量声明变量的基本格式:[修饰符]

数据类型变量名[=初始化值];变量的分类变量的修饰符变量的初始化信息安全工程学院©SuoWang2016面向对象程序设计Java108成员方法声明成员方法的语法格式方法名必须符合Java标识符规范setter与getter方法成员方法的分类实例方法和类方法成员方法重载信息安全工程学院©SuoWang2016面向对象程序设计Java

[修饰符]

返回类型方法名([参数1,参数2,…])[throws

异常]{ //方法实现}109构造器声明构造器只用于创建和初始化一个新的对象—“内存分配器和初始化程序”没有析构器(析构函数)构造方法的基本格式:[访问修饰符]

类名([参数1,参数2,…]){ //构造器实现}构造器重载

信息安全工程学院©SuoWang2016面向对象程序设计Java

110创建对象四种方式:new运算符反射机制对象的clone()方法反序列化访问对象成员对象的引用.对象的公有成员信息安全工程学院©SuoWang2016面向对象程序设计Java111this关键字this关键字就是Java虚拟机分配给对象的一个指向其自身的引用,用于在类中表示其对象自身。this关键字的基本用法:区分成员变量与方法参数在构造器中调用其它构造器在实例方法中表示当前对象的引用信息安全工程学院©SuoWang2016面向对象程序设计Java112package包(package):包相当于命名空间,可声明包并将类或接口放入包中。包的作用区分名字相同的类有助于实现访问权限控制有助于划分和组织大量的类包的声明基本格式:package

包名;包名符合Java标识符规范;一个Java源文件最多只能有一个package语句,但不是必须的;package语句必须位于Java源文件的第一行(注释除外)包的命名规范:小写,包含足够的信息,通常用到域名信息安全工程学院©SuoWang2016面向对象程序设计Java

113packageJDKAPI中提供的部分包如下:

java.lang包含基本的Java语言类,如数据类型,自动引入java.io,包含输入输出类,如数据流java.util,包含实用工具类,如日期和数据结构java.applet,包含开发Applet所用的类java.sql,包含JDBC访问数据库的类javax.swing,包含图形界面GUI所用的类信息安全工程学院©SuoWang2016面向对象程序设计Java

114importimport语句在访问来自另外一个包(java.lang包除外)的类时,需要用import语句将此类引入。基本语法:单类型导入:import包名[.子包名[.子包名……]].类名;例:importjava.util.Date;按需求类型导入import包名[.子包名[.子包名……]].*;例:importjava.util.*;信息安全工程学院©SuoWang2016面向对象程序设计Java

115import语句静态导入单个静态导入(single-static-import)importstatic

包名[.子包名[.子包名……]].类名.静态成员;按需静态导入(static-import-on-demand)importstatic

包名[.子包名[.子包名……]].类名.静态成员;信息安全工程学院©SuoWang2016面向对象程序设计Java116信息安全工程学院©SuoWang2016面向对象程序设计Java117packagejavabook.ch2;publicclassStaticCommon{ publicstaticfinalintNUMBER=100; publicstaticvoidstaticMethod(){ System.out.println("这是一个静态成员方法"); }}packagejavabook.ch3;importjavabook.ch2.StaticCommon;publicclassStaticImportDemo{ publicstaticvoidmain(String[]args){ System.out.println(StaticCommon.NUMBER); StaticCommon.staticMethod(); }}packagejavabook.ch3;importstaticjavabook.ch2.StaticCommon.NUMBER;importstaticjavabook.ch2.StaticCommon.staticMethod;publicclassStaticImportDemo{ publicstaticvoidmain(String[]args){ System.out.println(NUMBER); staticMethod(); }}访问控制修饰符基于面向对象编程中的封装思想封装实现细节,对外公开接口用于控制类及类的成员变量、方法的访问权限分为4个访问权限级别,对应4个访问范围public:公开的(default):没有访问控制符,向同一个包中的类公开protected:受保护的,向子类及同一个包中的类公开private:私有的,不对外公开,只有在本类中可以访问信息安全工程学院©SuoWang2016面向对象程序设计Java

118访问控制修饰符访问级别修饰符同类同包子类不同包公开的public√√√√受保护的protected√√√—默认的√√——私有的private√———信息安全工程学院©SuoWang2016面向对象程序设计Java

顶层类只有public或默认两种访问级别成员变量、成员方法、构造方法可用任何一种访问修饰符局部变量不能使用访问修饰符119Java源文件的结构Java源文件结构,每个Java源文件只能包含零个或一个package语句零个或多个import语句零个或多个类声明,但只能有一个公有类零个或多个接口声明信息安全工程学院©SuoWang2016面向对象程序设计Java

120Java虚拟机运行时数据区信息安全工程学院©SuoWang2016面向对象程序设计Java

Java虚拟机执行Java程序过程121Java虚拟机运行时数据区信息安全工程学院©SuoWang2016面向对象程序设计Java

Java虚拟机运行时数据区122小结思考题信息安全工程学院©SuoWang2016面向对象程序设计Java

123

继承与多态索望Email:suowang@网络存储密码:wlgcx2003信息安全工程学院©SuoWang2016面向对象程序设计Java

124信息安全工程学院©SuoWang2016面向对象程序设计Java

继承与多态本章大纲继承的基本语法方法覆盖、变量与静态方法隐藏super关键字抽象类多态Object类125信息安全工程学院©SuoWang2016面向对象程序设计Java

继承面向对象程序设计中的继承基于已有的类创造一个新类。新类(子类/派生类)继承(extends)了父类(超类/基类)的属性和方法,同时可以扩展出新的属性和方法,或者覆盖(Overriding)父类的方法。子类与父类之间是“isakindof”的关系。子类与父类具有相同的类型。126信息安全工程学院©SuoWang2016面向对象程序设计Java

继承基本语法格式

classSubClassext

温馨提示

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

最新文档

评论

0/150

提交评论