




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言概述,1,关于args数组-命令行参数,在main方法有一个args参数,args为String数组,存储运行时送入的参数 Java解释器执行时格式: java YourClass arg1 arg2 如果运行时给它值,这些参数可以给程序提供数据 如果用于数值运算,还需要字符串类型解析。 简单的两个数相加例子,Java语言概述,2,多个抽象数据类型变量的引用一个对象(Aliasing),String str1 new String(); String str2 str1; /str1和str2指向一个变量的引用,str2也称为变量str1的一个别名(Alias) 与 基 本 数 据 类 型 不 同: int a 0; int b a; /b被赋的是a的值,两个变量存在内存不同区域,Java语言概述,3,第5讲 面对对象编程基础(上),西亚斯学院计算机系 姜斌 2011年,Java语言概述,4,学习导读 本章着重介绍Java编程中类和对象等非常重要的概念。 Java程序是由一个个类定义组成的,编写Java程序的过程就是从现实世界中抽象出Java可实现的类并用合适的语句定义它们的过程,这个定义过程包括对类内各种属性和方法的定义,创建类的对象,也包括类间的各种关系和接口的定义。 方法是类的主要组成部分。在一个类中,程序的作用体现在方法中。方法是Java语言的基本构件。利用方法可以组成结构良好的程序。本章介绍方法的构成规则和设计、使用方法的基本要点。 Java的应用程序接口(API)大量的软件包库。,第4章 类和对象,Java语言概述,5,第4章 类和对象,一、面向对象的基本概念 * 二、 类 * 三、 方法 四、 访问控制符 本章小结 思考与练习,一、面向对象的基本概念,概念概括:OOA方法提供了抽象数据类型机制,遵循软件设计的三条重要原则,即抽象、信息隐藏和模块化。,Java语言概述,7,面向对象的基本概念,1 抽象,1)什么是抽象 抽象就是抽出事物的本质特性而暂时不考虑它们的细节。过程抽象和数据抽象是常用的两种主要抽象手段。(附录:UML解释此过程) 2)如何用面向对象的方法实现抽象 一个抽象数据类型(Abstract Data Type,ADT)可以分解成4个部分,如图4-2所示。语法和语义构成抽象数据类型ADT的说明,让使用者了解这个抽象数据类型的特征。属性和方法构成ADT的实现,展示这个ADT是怎样做成的。,Java语言概述,8,2 封装(Encapsulation),信息隐蔽(Information Hiding)的过程称为封装。 有两方面的原因促使我们控制对成员的访问。 第一个原因是防止程序员接触他们不该接触的东西通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口(Information)即可,毋需明白这些信息。 第二个原因是允许库类创造者修改内部结构,不用担心它会对客户程序员造成什么影响。,Java语言概述,9,隐藏实现(Hiding Implementation),有了类创造者提供的服务方法,我就可以使用它了。,我要实现具体的的方法,还要防止别人更改它。当更改方法的具体实现时,不影响类使用者。,客户程序员,类创造者,Java语言概述,10,如何去做: 把类中的成员变量声明成private; 例如:在我们定义Plane类时,把它的成员属性定义成private,通过的成员方法(公有Public范围定义的)来使用。 Plane类 2. 给外部提供服务的public公有方法一般称为成员方法,可以注解制作java文档(JavaDoc);可方便客户程序员使用。,Java语言概述,11,3 对象(Object),可将对象想象对象(object)应是实际问题域中有意义的个体或概念实体。此外,对象应该具有记忆自身状态的能力(成员属性)。同时对象应该以某种方式与系统发生关联(方法),既对象应该与系统中其他有意义的对象进行消息传递(Passing Messages),并提供外部服务(Providing Services)。,Java语言概述,12,对象,(1) 所有东西都是对象。(Everything is Object)可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。 (2) 运行的程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。 (3) 每个对象都有自己的存储空间,可容纳其他对象。 (4) 每个对象都有一种类型。根据语法,每个对象都是某个“类”的一个“实例”。 (5)同一类所有对象都能接收相同的消息。,二、 类,概念概括: 属性:一般是成员属性的简称,指类内包含的各项数据,包括常量、变量 方法: 则被称为成员方法或方法。,复合数据类型(Abstract Data Type),Java语言概述,14,类的定义,类的基本定义方法如下: 修饰符 class 类名 extends 父类 implements 接口名 类成员变量声明 类成员方法声明 ,类的修饰符用来说明类的特殊性质。 主要分为: 访问控制符:public 公共类 抽象类说明符:abstract 最终类说明符:final,Java语言概述,15,1关于类头-class,class关键字,在它的后面,应跟随新数据类型的名称。(注意不要把class写成Class)。 父类名跟在extends 关键字后面,用来说明当前类是哪个已经存在类的子类,存在继承关系。继承是类与类之间的一种非常重要的关系。,见UML实例,Java语言概述,16,1关于类头-接口名,接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。接口是Java语言用来实现多重继承的一种特殊机制,,Java语言概述,17,2关于类头-访问控制符,“public”(公共) 意味着后续的定义任何人均可使用。 “package pravate”(包私有)缺省方式,若某样东西是“友好的”,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包访问”)。 “private”(私有)意味着除您自己、类型的创建者以及那个类型的内部方法成员,其他任何人都不能访问后续的定义信息。 “protected”(受保护的)与“private”相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。,Java语言概述,18,3关于类体 类体的定义要包括类的具体内容,包括类的成员属性与方法。 class ,Java语言概述,19,Java中定义成员属性的语法如下: 修饰符 变量类型 变量名 =变量初值;,变量类型和变量名是声明一个变量必不可少的部分;变量的类型是简单数据类型,如int、double等, 或类(ADT),如Plane,Bird。,3关于类体-类的属性(成员属性),Java语言概述,20,类定义例子(UML类图),可以通过UML类图定义一个类,然后进行类的声明和类体定义(属性和方法).,假设我们设计“职工工资 系统”,常常涉及到员工,可定义Employee类,如右边类图,+getName(),+setName(),+getHireDay(),-name : String,-salary : Integer,-hireDay : Date,Employee,+setHireDay(),+raiseSalary(),+toString(),Java语言概述,21,class Employee /属性的实例 private String name; private double salary; private Date hireDay; /构造方法 public Emplopyee() name =“未命名”; salary = 0.0; /方法1 public String getName() return name; /更多的方法 Public String toString() return ; ,Java语言概述,22,4、 创建类及类的实例对象,对象是类的一个实例(Instance),类是同种对象的抽象,是创建对象的模板。在程序中创建个对象将在内存中开辟一块空间,其中包括该对象的属性和方法。 我们将分步讲述这个类的实现细节。创建对象使用关键字运算符new,例如下面的语句将创建Employee的对象: (附录:UML创建对象的过程),四、 方法,方法是类的主要组成部分。在一个类中,程序的作用体现在方法中。,Java语言概述,24,方法概述,Java程序的符合模块化原则的基本结构如下: 引入Java类库; 定义用户类1 定义类1的若干变量或对象: 定义类1的方法1; 定义类1的方法2; 定义类1的方法M1; 定义用户类2 定义类2的若干变量或对象: 定义类2的方法1; 定义类2的方法2; 定义类2的方法M2 ,图:模块化分解示例,Java语言概述,25,方法概述,方法进一步将程序进行了模块化的管理,优点如下: (1)“分而治之”,易于管理 (2)可以被复用,程序可以使用API中标准方法 (3) 避免代码重复 Java语言的方法实现子任务处理时,有下面几个原则与规律: (1)算法中需要细化的步骤、程序中重复的代码以及重载父类方法都可以定义成类的方法。 (2)界面清晰,任务明确。 (3)大小适中。 (4)标准方法(API)和用户自定义方法 (5)main方法,Java语言概述,26,1、 定义方法 1)声明方法头 2)声明方法体,Java中声明方法的语法如下: 修饰符 返回值类型 方法名(参数列表) throws 例外名1,例外名2, 方法体: 局部变量声明; 语句序列; ,类的方法,又称为成员方法,用来规定类属性上的操作,实现类的内部功能的机制,同时也是类与外界进行交互的重要窗口。,Java语言概述,27,2 、 定义方法-声明方法头 1)声明方法头 方法头一般由方法名、参数列表(有时也称为引数)、返回类型、方法修饰符和方法抛出的例外五部分组成。 方法头定义要求见书, 注意如下: 比较好的方法名要符合命名规约,chooseCourse(), raiseSalary(), ; 经常在类内部使用的比较常调用的代码设置的方法,往往被设成private范围,避免外部调用,(常称为helper方法),Java语言概述,28,2 ) 定义方法-声明方法体,方法头定义了方法的性质,方法体则定义了方法的具体内容。 方法体通常起到两种作用,一是围绕类的属性进行各种操作;二是与其他的类与对象进行数据交流、消息传递等操作。 在一个方法中定义另一个方法将产生语法错误。 (1)最好避免局部变量“屏蔽”成员变量,在一个类中不使用同名标识符就可以做到这一点;方法调用中参数用来传递数值、传递引用;另外,方法还可以递归调用。 (2)方法体中如果指定了非void的返回值类型,方法中就必须包含一条return语句保证任何情况下都有返回数值.,Java语言概述,29,类中常用到的方法,成员属性的getXXX()和setXXX()方法,作用是为了访问和设置成员属性的值的;(XXX代表某个属性名称) toString()方法,作用是返回当前对象的属性值;默认方法,通过系统输出方法; 有时候为了实现一些接口,还有compareTo(),equals(),hashCode()等方法的定义,Java语言概述,30,3 方法的调用,调用其他对象成员方法,则需要使用该对象。例如:在其它类中访问方法,语句: Employee em=new Employee(); System.out.println(em.getName(); 如果在成员方法定义中访问其他成员方法:则不要使用对象来访问,(也可用this表示本对象) System.out.println(getName(); Systeem.out.println(this.getName();,Java语言概述,31,4、 构造方法-构造方法的一般概念,要使用对象,首先必须构造它们,并指定它们的初始状态,这种方法也称为构造器。 在Java程序设计语言中,使用构造方法(constructor)来构造新的实例。一个构造方法是一个特殊方法,它的作用是构造并初始化对象。 构造方法是类的一种特殊方法,它的特殊性主要体现在如下的几个方面: (1)构造方法的方法名与类名相同。 (2)构造方法没有返回类型。 (3)构造方法的主要作用是完成对类对象的初始化工作。 (4)构造方法不能由编程人员显式地直接调用。 (5)在创建一个类的新对象的同时,系统会自动调用该类的构造方法为新对象初始化。(UML构造方法实例),Java语言概述,32,4、构造方法-构造方法的作用,(1)对象初始化,给成员变量赋初始化值 (2)引入更多的灵活度(变量赋值或更复杂的操作) (3)Java中可以不定义构造方法 Java中可以不定义构造方法,此时系统会自动为该类生成一个默认的构造方法。这个构造方法的名字与类名相同,它没有任何形式参数,它会给你的成员变量分别赋系统缺省值。 构造方法也可以调用一个初始方法来进行一些成员属性的初始化。 【SimpleContrustor例子】,Java语言概述,33,4、构造方法-创建自己的构造方法,构造方法的名字和类的名字是相同的。当构造Employee类的对象时,此构造方法被启动,成员属性赋初值,在Java中,定义和初始化是统一的两者缺一不可。 例如,用下面的代码创建Employee类的一个实例时, new Employee (“James Bond”,100000,1950,1,1);,构造方法的特点有: (1)构造方法和类具有相同的名字。 (2)一个类可以有多个构造方法。 (3)构造方法可以有0个、1个或多个参数。(类似方法的重载) (4)构造方法没有返回值。 (5)构造方法总是和new运算符一起被调用。,Java语言概述,34,声明抽象数据类型Employee对象的 Employee e1, e2; /创建两个变量 New 语句可按需要通过不同构造器来创建新的对象,并把新创建对象赋给声明的变量。 e1=new Employee ( ); e2 = new Employee( “James Bond”,100000,1950,1,1 );,5、 创建类及类的实例对象,Java语言概述,35,5、 创建类及类的实例对象,在程序中我们构造了一个Employee数组,并给它赋给三个Employee对象。关于数组我们将在下一章讲述。 staff0 = new Employee(“张三“, 75000,1987, 12, 15); staff1 = new Employee(“李四“, 50000,1989, 10, 1); staff2 = new Employee(“王五“, 40000,1990, 3, 15);,创建对象以某个类为模板,这个类里定义了哪些属性和方法,新建的对象就必然在内存里拥有相应的属性和方法。,【例4.1】显示三个员工的相关信息,四、 访问控制符,Java推出了“访问控制修饰符”的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的。 这种访问控制的级别在“最大访问”和“最小访问”的范围之间,分别包括:public,“defaut” (无关键字),protected 以及private。下面的列表说明访问控制修饰符含义:,Java语言概述,37,表4-2访问控制符,Java语言概述,38,访问控制符 1、公共访问控制符public,Java中类的访问控制符如果被声明为公共类,表明 1)它可以被所有的其他类所访问和引用,这里的访问和引用是指这个类作为整体是可见和可使用的, 2) 程序的其他部分可以创建这个类的对象、访问这个类内部可见的成员变量和调用它的可见的方法。 3) 若不在同一包中,要import 该公共类后,就可以访问这个类,Java语言概述,39,2 缺省访问控制符,假如一个类没有访问控制符,说明它具有缺省的访问控制特性(类似于其它语言的friendly)。 1)这种缺省的访问控制权规定该类只能被该类和同一个包中的类访问和引用 2)而不可以被其他包中的类使用,这种访问特性称为包访问性。 3)通过声明类的访问控制符可以使整个程序结构清晰、严谨,减少可能产生类间干扰和错误。,Java语言概述,40,3 私有访问控制符private 用private修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类,来获取和引用。 1). 对私有数据访问的方法 例如有三个实例字段,它们含有在Employee类的实例内部被操作的数据。 private string name; private double salary; private Date hireDay; private(私有的)关键字用来确保可以访问这些实例字段的只能是Employee类本身的方法。,Java语言概述,41,3 私有访问控制符private 2). 私有方法,在实现类时,我们使所有的数据字段都是私有的,因为公开的数据是危险的。对于方法又是什么情况呢 ?虽然大多数方法是公开的,但是私有方法也经常使用。这些方法只能被同一个分离的方法。 总起来说,在下面的情况下可以选择私有方法: (1)与类的使用者无关的那些方法。 (2)如果类的实现改变了,不容易维护的那些方法。,Java语言概述,42,4 保护访问控制符protected 用protected修饰的成员变量可以被三种类所引用 1)该类自身、与它在同一个包中的其他类、在其他包中的该类的子类。 2)使用protected修饰符的主要作用是允许其他包中的它的子类来访问父类的特定属性。 3) protected关键字为我们引入了一种名为“继承”的概念,它以现有的类为基础,并在其中加入新的成员,同时不会对现有的类产生影响我们将这种现有的类称为“基础类”或者“基本类”(Base Class)。亦可改变那个类现有成员的行为。对于从一个现有类的继承,我们说自己的新类“扩展”(extends)了那个现有的类。,Java语言概述,43,Java语言概述,44,图4-3 程序中的访问控制区域,Java语言概述,45,作业:,做课本第1, 2, 3, 5题。 做实验课后题的代码,即Plane类(飞机)的抽象和类的定义,试着在自己的机器上实现。,本章附录,用UML统一建模语言 描述本章概念的实例,Java语言概述,47,类的抽象过程(UML解释),现实世界:鸟(Bird) 一般语言描述: 鸟都有颜色(color),大小(size),品种(breed),性别(Sex),等等 鸟都能够做:飞行(fly),捕食(prey),筑槽(nest),等等,Java语言概述,48,类的建模(UML),类图(Class diagram),代码(Code) public class bird /attributes private String breed; private int size; private String sex; / methods public void fly() public String prey() public void nest() ,RETURN,(Attribute/Field)属性/字段,(Method) 方法/方法,(Class Name)类名,Java语言概述,49,类产生对象过程,属性: Magpie 15 Blue female,Bird1,Bird2,Bird3,new运算符,内存空间(mem chocks),属性: Dove 10 white male,属性: Eagle 35 Blue female,prey(),fly(),fly(),fly(),RETURN,Java语言概述,50,鸟有水中的鸟和陆地上的鸟,如何抽象?,Code: public class WaterBird extends Bird . public class LandBird extends Bird . ,RETURN,Java语言概述,51,构造方法,/创建(初始化,构造)对象部分 Bird bird1; bird1 new Bird (dove, 10, white, m );,/构造方法定义部分 public Bird(String b, int s, String c, char g) breed =b; Size = s; color = c; sex =g; ,new,RETURN,常用工具类补充,Java语言概述,53,1Math类,Math供了丰富的常量和方法,可以执行常见的算术运算、字符串操作、字符操作、输入输出、错误检查等操作。,【例 4.2】掷一个六面骰子6000次的程序,Java语言概述,54,Java API中的方法-Math类的方法,表4-1 Math类常用的方法,Java语言概述,55,Java API中的方法-Math方法的调用实例,调用方法的一般格式是先写方法名,然后是左括号,接着是参数(argument)或由逗号分隔的参数表,最后是右括号。例如,要计算并且打印出900的平方根,调用方法的语句格式: System.out.prtntln(Math.sqrt(900);,注意,所有Math类方法的调用必须采用方法名前冠以类名Math和点(.)运算符的形式。,Java语言概述,56,Math的random方法使用,double Random(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三明永安市事业单位专门面向驻军随军家属公开招聘模拟试卷(含答案详解)
- 2025河南郑州工程技术学院高层次人才招聘81人考前自测高频考点模拟试题及参考答案详解
- 多维拓扑协同方法-洞察与解读
- 2025金华兰溪市市属国企招聘32人模拟试卷及答案详解(历年真题)
- 2025贵州装备制造职业学院引进高层次人才(博士)、高技能人才考前自测高频考点模拟试题完整答案详解
- 2025贵州黔东南州第十三届贵州人才博览会黔东南州事业单位人才引进19人模拟试卷及完整答案详解
- 2025河南郑州工程技术学院高层次人才招聘81人考前自测高频考点模拟试题附答案详解(典型题)
- 班组安全培训检查评比课件
- 2025湖南株洲世纪星翰林高级中学公开招聘教师23人考前自测高频考点模拟试题附答案详解(突破训练)
- 班组安全培训教育计划课件
- 辐射安全防护技术革新方案
- 2025年大学生人文知识竞赛题库及参考答案
- 中秋团圆主题班会课件
- 义齿行业安全教育培训课件
- 飞行服务站2025年无人机培训基地建设与发展报告
- 新质生产力六大科创中心
- 医疗数据孤岛问题与跨平台安全共享策略-洞察及研究
- 2025年迎中秋节庆国庆节主题班会课件
- 摄影设备租赁平台的市场潜力与趋势-洞察及研究
- 第2课《中国人首次进入自己的空间站》课件+2025-2026学年统编版语文八年级上册
- 私营医院市场营销部升职晋升管理体系
评论
0/150
提交评论