版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 类与对象3.1.1 面向对象术语 1对象3.1.1 面向对象术语 2类 类被称为模板或者蓝本。对象就是由这些模板或者蓝本产生的。3.1.1 面向对象术语 3承继3.1.1 面向对象术语4接口接口可以描画为类定义的模板3.1.1 面向对象术语 5封装3.1.2 面向对象程序设计方法的优点3.1.2 面向对象程序设计方法的优点 1可重用性3.1.2 面向对象程序设计方法的优点 2可扩展性3.1.2 面向对象程序设计方法的优点 3易于管理和维护3.2 面向对象与UML建模 所以在构建软件的过程中,系统建模是非常关键的步骤,所以OOP也与建模严密地结合在一同。3.2.1 为什么需求建模 建模是
2、一项经过检验并被广为接受的工程技术。建立房屋和大厦的建筑模型,能协助用户得到实践建筑物的印象,甚至可以建立数学模型来分析大风或地震对建筑物呵斥的影响。3.2.2 UML建模言语UML就是一致建模言语Unified Modeling Language,是由OMG组织Object Management Group,对象管理组织在2019年发布的。UML的目的之一就是为开发团队提供规范通用的设计言语来开发和构建计算机运用。UML提出了一套IT专业人员等待多年的一致的规范建模符号。经过运用UML,这些人员可以阅读和交流系统架构和设计规划就像建筑工人多年来所运用的建筑设计图一样。3.2.3 UML的面向
3、对象分析设计 运用UML进展面向对象的系统分析设计,其过程通常由以下3个部份组成。 1识别系统的用例和角色 2进展系统分析,并抽取类 3系统设计,并设计类及其行为3.3 Java言语与面向对象特性 Java是完全面向对象的言语。 类是Java程序中最根本的单元。3.4 类的定义和对象的创建3.4.1 类的根本构造 类是构造对象的模板或蓝图。 可以经过类声明来定义类,然后运用类来创建用户需求的对象。3.4.2 类之间的关系 在面向对象思想中,类之间存在以下几种常见的关系。 1“USES-A关系 “假设类A的方法支配了类B对象的成员,那么称之为类A“USES-A用到了类B。 2“HAS-A关系 “
4、HAS-A关系是一种拥有关系,假设类A中有B类型的成员援用变量,那么类A“HAS-A拥有类B。 3“IS-A关系 假设类A是类B子类的一种,那么可以说类A“IS-A是一种类B3.4.3 构造函数 在创建对象时,对象的成员可以由构造函数方法进展初始化。 构造函数是一种特殊的方法,它具有和它所在的类完全一样的名字。 一旦定义好一个构造函数,创建对象时就会自动调用它。 构造函数没有前往类型,这是由于一个类的构造函数的前往值的类型就是这个类本身。3.4.4 类成员 定义了类之后,就可以在类体中声明两种类的成员,成员变量与成员方法。 1成员变量的运用 成员变量就是类的属性,类定义中的属性指定了一个对象区
5、别于其他对象的值。 2成员变量的初始值 每当创建一个对象后,假设对象有成员变量,那么系统会自动为其分配一个初始值,3.4.5 对象的创建有了类就可以利用其来创建对象了,在Java中创建对象很简单,只需运用new关键字即可。如下代码创建了Student类的对象。Student s = new Student();由类创建对象的过程称为实例化,每个对象是类的一个实例,阐明了类与对象的不同之处。学生类是对什么是学生做定义,而王强、李勇和马跃是对象,是学生类的实例。 3.5 方 法 在Java中,对对象的操作由方法来完成。要使一个对象完成某些任务,就要调用其相应的方法。 方法实践上描画的是一个行为,一
6、种功能3.5.1 方法的定义 方法的根本组成包括:方法的声明以及方法体,根本语法如下。 前往值类型 方法名(参数序列) 方法体 3.5.2 方法的重载 方法重载是指在同一个类里面,有两个或两个以上具有一样称号,不同参数序列的方法。 例如,三角型类可以定义多个称号为area的计算面积的方法,有的接纳底和高做参数,有的接纳3条边做参数。 1方法重载的规那么 2重载方法的匹配3.5.3 递归 递归的方式分为2种:直接递归和间接递归3.6 静 态 成 员 运用static关键字把成员声明为静态成员。静态变量也叫类变量,非静态变量叫实例变量 静态成员最主要的特点是它不属于任何一个类的对象,它不保管在恣意
7、一个对象的内存空间中,而是保管在类的公共区域中。 所以任何一个对象都可以直接访问该类的静态成员,都能获得一样的数据值。修正时,也在类的公共区域修正。3.6.1 静态方法和静态变量 通常情况下,方法必需经过它的类对象访问。 在方法的声明前面加上static即可。运用static关键字的方法即静态方法。 假设一个方法被声明为static,它就可以在它的类的任何对象创建之前被访问,而不用援用任何对象。 但是在静态方法中,不能以任何方式援用this或super。3.6.2 静态变量和常量在Java中没有一个直接的修饰符来实现常量,而是经过静态成员变量的方式来实现的,如下代码阐明了这个问题。1/声明3个
8、常量X、Y、Z2public static final int X=10;3static public final int Y=20;4final static public int Z=40;static表示属于类,不用创建对象就可以运用,由于常量应该不依赖于任何对象,final表示值不能改动。普通用作常量的静态成员变量访问权限都设置为public,由于常量应该允许一切类或对象访问。 3.6.3 静态成员的访问可以运用“.的语法调用静态成员变量。3.6.4 main()方法 程序在运转的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必需是main
9、,方法必需是public static void 类型的,方法必需接纳一个字符串数组的参数等等。 由于main()方法是由Java虚拟机调用的,所以必需为public,虚拟机调用main()方法的时候不需求产生任何对象,所以main方法声明为static,且不需求前往值,所以声明为void 所以最终格式如下所示。 public static void main(String args) 3.6.5 Factory方法 Java的静态方法有一种常见的用途,就是运用Factory方法产生不同风格的对象 Factory方法就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a
10、=new A() ,Factory Method也是用来创建实例对象的3.7 包 运用包的目的之一就是可以在同一个工程中运用称号一样的类 假设两个开发人员不约而同地建立了两个一样名字的类,只需将其放置在不同的包中,就不会产生冲突。3.7.1 包的定义 要想将类放入指定的包中,就必需运用package语句,语法如下。 package ; package语句必需放在源文件的最前面 java.lang,这就表示此源文件中的类在java包下的lang子包中3.7.2 类的导入 当一个类要运用与本人处在同一个包中的类时,直接访问即可。 假设要运用其他包中的类就必需运用import语句,根本语法如下。 i
11、mport .*; import .类名;3.7.3 静态导入 从Java SE 5.0开场,导入语句不但可以导入类,还具有导入静态方法和静态成员变量的功能,不过需求在关键字“import和包名之间添加关键字“static,语法如下。 import static .*; import static .;3.8 成员的访问控制 成员的访问是指以下两种不同的操作。 一个类中的方法代码能否可以访问调用另一个类中的成员。 一个类能否可以承继其父类的成员。3.8.1 公共类型:public 公共类型运用public关键字来进展修饰,当一个成员被声明为public时,一切其他类,无论该类属于哪个包,均可以
12、访问该成员。 对于承继而言,规那么为假设父类的成员声明为public,那么无论这两个类能否在同一个包中,该子类都能承继其父类的该成员。3.8.2 私有类型:private 标识为私有类型的成员用private关键字修饰,其不能被该成员所在类之外的任何类中的代码访问。 对于承继而言,规那么为假设父类的成员声明为private,子类在任何情况下都不能承继该成员。3.8.3 默许类型:default 具有此访问权限的成员,只对与此成员所属类在同一个包中的类是可见的。 也就是说,对同一个包中的类,默许类型相当于public 而对包外的类那么相当于private。下面的两段代码阐明了默许类型的运用。3.
13、8.4 维护类型:protected当访问该成员的类位于同一包内,那么该类型成员的访问权限相当于public类型。只是有一点区别,假设访问该成员的类位于包外,那么只需经过承继才干访问该成员。3.9 封 装就是把东西包装起来。换言之,成员变量和方法的定义都包装于类定义之中。经过限定类成员的可见性,可以使类成员中的某些属性和方法可以不被程序的其他部分访问,它们被隐藏了起来,只能在定义的类中运用,这就是面向对象中实现封装的方式。用访问限制修饰符维护成员变量,通常是private。建立公有的访问方法,强迫调用代码经过这些方法访问成员变量。3.10 利用系统已有的类 Java类库中提供的几个常用的处置日
14、期时间的类。 经过对这几个类的引见,使读者了解利用系统已有的类的思想。3.10.1 Date类在规范Java类库中包含一个Date类,其对象用来描画一个时间点,如“September 22,2019,23:59:59 GMT。import java.util.Date;Date类要运用其对象. Date d1=new Date();/表示当前系统时间的对象。Date d2=new Date(106,11,8);/表示1900+106年,11月,8日,过时System.out.println(new Date(); Date d2=new Date(60000); /从1970年1月1日以来阅历
15、多少毫秒。 Date d1=new Date(); Date d2=new Date(60000); System.out.println(d1.after(d2);/true System.out.println(d1.before(d2);/false3.10.2 GregorianCalendar类 运用当前时间构造一个默许的对象 new GregorianCalendar()。 GregorianCalendar cal=new GregorianCalendar(); System.out.println(cal);java.util.GregorianCalendartime=12
16、85743032156,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfoid=Asia/Shanghai,offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=8,WEEK_OF_YEAR=40,WEEK_OF_MONTH=5,DAY_OF_MONTH=2
17、9,DAY_OF_YEAR=272,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=50,SECOND=32,MILLISECOND=156,ZONE_OFFSET=28800000,DST_OFFSET=0 GregorianCalendar(int year, int month, GregorianCalendar(int year, int month, int dayOfMonth) int dayOfMonth) GregorianCalendar(int year, int mon
18、th, GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)int dayOfMonth, int hourOfDay, int minute) GregorianCalendar cal=new GregorianCalendar cal=new GregorianCalendar(1978,8,8); 1978GregorianCalendar(1978,8,8); 1978年年9 9月月8 8日日 add(int field, int amount)/add(int field,
19、 int amount)/为给定的日历字为给定的日历字段添加或减去指定的时间量段添加或减去指定的时间量 public int get(int field) /public int get(int field) /前往给定日历字前往给定日历字段的值段的值 set(int field, int value) set(int field, int value) / /将给定的日历字段设置为给定值。将给定的日历字段设置为给定值。 set(int year, int month, int date) set(int year, int month, int date) / /设置日历字段设置日历字段 Y
20、EAR YEAR、MONTH MONTH 和和 DAY_OF_MONTH DAY_OF_MONTH 的值。的值。 set(int year, int month, int date, set(int year, int month, int date, int hourOfDay, int minute) int hourOfDay, int minute) / /设置日历字段设置日历字段 YEAR YEAR、MONTHMONTH、DAY_OF_MONTHDAY_OF_MONTH、HOUR_OF_DAY HOUR_OF_DAY 和和 MINUTE MINUTE 的值。的值。 setTime(D
21、ate date) setTime(Date date) / /运用给定的运用给定的 Date Date 设置此设置此 Calendar Calendar 的时间。的时间。 Date getTime() Date getTime() / / 前往一个表示此前往一个表示此 Calendar Calendar 时间值时间值例子3-32package chapter03.sample3_32;import java.util.*;public class Sample3_32 public static void main(String args) / 创建当前日历对象GregorianCalendar now = new GregorianCalendar();/ 从当前时期对象中取出时间日期对象Date date = now.getTime();/ 将时间日期对象按字符串方式打印System.out.println(date.toString();/ 重新将时间对象设置到日期对象中now.setTime(date);/ 从当前日期对象中取出当前月份、日期int today = now.get(Calendar.DAY_OF_MONTH);int mont
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水利工程安全员岗位安全考试试卷及答案
- 小学二年级课外阅读《七色花》考试试题及答案
- 熔模铸造制壳工岗位技能考试试卷及答案
- 社区医院配套场地合同
- 3.2《哦香雪》课件(内嵌视频)2026-2027学年统编版高一语文必修上册
- 印染烘干操作工安全操作竞赛考核试卷含答案
- 变压器绝缘件装配工岗前基础晋升考核试卷含答案
- 轻烃装置操作工变革管理考核试卷含答案
- 渔船电机员环保知识考核试卷含答案
- 旅店服务员安全素养竞赛考核试卷含答案
- 员额法官选拔试题及答案
- 住宅项目装饰装修专项施工方案
- 《半条被子一程初心》-纪念中国工农红军长征胜利90周年主题朗诵(长征主题)
- 2026年民航飞行员招飞心理招录测试题含答案
- 教学设计新苏教版科学五上《光源》教学设计
- 《图形的平移和旋转》教案(2课时)-2026-2027学年西南大学版(新教材)小学数学五年级上册
- 《图像的魅力》教学课件-2026-2027学年湘美版(2024)初中美术八年级上册
- 2026届北京海淀区九年级英语中考三模模拟试卷(含答案逐题解析与听力原文)第009套
- 2025年全国农产品质量安全检测技能竞赛理论知识考试题库(含答案)
- 北大青鸟消防控制主机操作知识培训课件
- 2026年电信公司转正考试试题
评论
0/150
提交评论