版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计面向对象程序设计与系统开发与系统开发第第2章章 面向对象开发特点面向对象开发特点 2驱动任务一驱动任务一 将上一章中的矩形类进行改造,为了对象中数据的安全性,其长、宽两个属性在本类创建的对象外不可访问;同时要求当矩形对象产生的时候就已经有具体的长度和宽度,而不是在生成对象后再给长宽赋值。其保留了计算本身周长和面积的功能 3目标及知识点目标及知识点类中类中setter和和getter方法方法 2构造方法构造方法 this、static关键字关键字 3类及其成员的访问控制修饰符类及其成员的访问控制修饰符 4类的封装类的封装 1 14类的封装性类的封装性 封装封装Encapsulat
2、ion就是把对象的属性和行为结合成一就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。个独立的单位,并尽可能隐蔽对象的内部细节。 5 Java中的包中的包 Java包包package就是具有一定相关性的就是具有一定相关性的Java文件的集合文件的集合创建包创建包6在包中创建类在包中创建类 package 包名包名1.包名包名2.包名包名3. ;7使用包使用包使用使用import语语句句:import 包名包名1.类类名或接口名;名或接口名; import 包名包名1.包名包名2.*; ; 直接使用包直接使用包:java.util.ArrayList list = new
3、java.util.ArrayList(); 8 类的访问权限类的访问权限 一个一个类仅类仅有两个可能的有两个可能的访问权访问权限:默限:默认认的和公有的和公有( (public的。当一个的。当一个类类被声明被声明为为public时时, ,该该类类可被任何包的代可被任何包的代码访问码访问;如果一个;如果一个类为类为默默认认的的访问权访问权限,那么限,那么仅仅能由同一包内的其他代能由同一包内的其他代码码所所访问访问。 。9类成员的访问权限类成员的访问权限 Java类的成员变量和成员方法的访问权限类的成员变量和成员方法的访问权限修饰符无类修饰符类成员修饰符privatedefaultprotect
4、edpublic同一类同一个包不同包的子类不同包非子类10举例说明举例说明v/ 源文件Rectangle.javavpackage com.bean; /本类属于com包的bean子包下vpublic class Rectangle / 该类的权限为publicv / 私有的成员变量v private double length;v private double width;v / 求长方形的面积,注意该方法权限v double area()v return length * width;v v /*打印输出,公共的成员方法*/v public void display()v / 调用当前对象
5、的成员变量vSystem.out.println(长: + length + t宽: + width);v / 调用当前对象的成员方法vSystem.out.println(长方形的面积是: + area();v v11举例说明举例说明v / 源文件RectangleDemo.javav package com.demo; / 该类属于com.demo包下v import com.bean.*; / 导入com.bean包中所有的类v public class RectangleDemovpublic static void main (String args)v/ 调用带参构造方法创建一个长
6、方形对象rectvRectangle rect = new Rectangle();v/ rect.width = 2; /private不允许类外部调用v/ rect.length = 4; / private不允许类外部调用v/ System.out.println(长方形的面积是: + rect.area(); / 默认权限不同包的类不能调用v rect.display(); / 调用对象rect的成员方法vv 12getter、setter方法方法 若需要在其他类中访问私有成员,可以通过非私有的若需要在其他类中访问私有成员,可以通过非私有的setter和和getter方法来访问。这样的
7、方法常命名为方法来访问。这样的方法常命名为setXxx()和和getXxx(),分别实现对封装数据的设置和读取操作分别实现对封装数据的设置和读取操作 public void setWidth(double w) / 设置长方形的宽设置长方形的宽 width = w; public double getWidth() / 获取长方形的宽获取长方形的宽 return width; public void setLength(double l) / 设置长方形的长设置长方形的长 length = l; public double getLength() / 获取长方形的长获取长方形的长 return
8、 length; 13类的构造方法类的构造方法 构造方法的一般形式如下 :修修饰饰符符 方法名方法名(形式参数列表形式参数列表) / 方法体方法体1、构造方法名与类名相同。、构造方法名与类名相同。2、构造方法不返回任何值,也没有返回类型。、构造方法不返回任何值,也没有返回类型。3、每一个类可以有零个或多个构造方法,如果没有写构造方、每一个类可以有零个或多个构造方法,如果没有写构造方法默认存在一个没有参数的构造方法。法默认存在一个没有参数的构造方法。4、构造方法在创建一个类的对象时由系统自动地调用执行,、构造方法在创建一个类的对象时由系统自动地调用执行,一般不能显式地直接调用。一般不能显式地直接
9、调用。14v class Rectanglev double length; / 长v double width; / 宽v / 带参构造方法,用于初始化长方形的长和宽v public Rectangle(double w, double l)v width = w;v length = l;v v / 求长方形的面积v double area()v return length * width;v v 【例【例2-2】继续改造长方体类,使对象创建时能自动初始】继续改造长方体类,使对象创建时能自动初始化化 长方形的尺寸。长方形的尺寸。15v public class RectangleDemov
10、public static void main (String args)v/ 调用构造方法初始化每个长方形对象vRectangle rect1 = new Rectangle(10,20);v Rectangle rect2 = new Rectangle(3,6);vdouble area;v v area = rect1.area(); / 调用area()方法得到第一个长方形的面积v System.out.println(第一个长方形的面积是: + area);varea = rect2.area(); / 调用area()方法得到第二个长方形的面积v System.out.print
11、ln(第二个长方形的面积是: + area);vv 16 this关键字关键字 在程序中,可以在任何方法内使用在程序中,可以在任何方法内使用this来引用当前的对象,来引用当前的对象,this就指向了本身这个对象就指向了本身这个对象 / 带带参构造方法,用于初始化参构造方法,用于初始化长长方形的方形的长长和和宽宽 Rectangle(double w, double l) this.width = w; this.length = l; / 带带参构造方法,用于初始化参构造方法,用于初始化长长方形的方形的长长和和宽宽 Rectangle(double width, double length)
12、 this.width = width; / 使用使用this来来访问访问同名同名实实例例变变量量 this.length = length; 17this的使用场合的使用场合 v 访问当前对象的数据成员。v 访问当前对象的成员方法 18。vclass Rectanglev double length; / 长v double width; / 宽v / 带参构造方法,用于初始化长方形的长和宽v Rectangle(double width, double length)v this.width = width; / this关键字表示当前对象v this.length = length;v
13、v / 求长方形的面积v double area()v return this.length * this.width;v v / 打印输出v void display()v / 调用当前对象的成员变量vSystem.out.println(长: + this.length + t宽: + this.width);v / 调用当前对象的成员方法vSystem.out.println(长方形的面积是: + this.area();v v【例【例2-3】在例】在例2-2的基础上修改的基础上修改Rectangle类的构造方法,类的构造方法,使其形式参数与成员变量名称相同使其形式参数与成员变量名称相同
14、19static静态成员静态成员-静态类成静态类成员员 被声明为被声明为static的成员变量是静态变量,也称为类变量。的成员变量是静态变量,也称为类变量。静态变量本质上是全局变量。当声明该类的对象时,不静态变量本质上是全局变量。当声明该类的对象时,不生成生成static变量的副本,类的所有实例共享同一个变量的副本,类的所有实例共享同一个static变量变量 被声明为被声明为static的成员方法是静态方法,也称为类方法。的成员方法是静态方法,也称为类方法。静态方法有几条限制:静态方法有几条限制:(1它们仅可以调用其他它们仅可以调用其他static方法。方法。(2它们只能访问它们只能访问sta
15、tic数据成员。数据成员。(3它们不能以任何方式引用它们不能以任何方式引用this或或super20static静态成员静态成员-静态代码静态代码块块static / 程序程序块块 静态代码块不是类的方法,没有方法名、返回值和参数表。静态代码块不是类的方法,没有方法名、返回值和参数表。静态代码块也与类方法一样,不能使用实例变量及方法,静态代码块也与类方法一样,不能使用实例变量及方法,也不能使用也不能使用this或或super关键字。关键字。 static块块即静即静态态代代码块码块),),这这个个块仅块仅在在该类该类被第一次加被第一次加载时执载时执行一次。静行一次。静态态代代码块码块的的语语法
16、格式:法格式:21vpublic class UseStaticv static int a = 3; / 静态变量类变量),并初始化v static int b; / 静态变量v int c = 10; / 实例变量v static void display(int x) / 静态方法类方法)v System.out.println(x = + x);v System.out.println(a = + a);v System.out.println(b = + b);v /System.out.println(c = + c);/静态方法不能直接调用非静态成员v v static / 静态
17、代码块v System.out.println(静态代码块执行开始);v b = a * 4; / 初始化静态变量bv v public static void main(String args)v display(42); / 直接调用静态方法v v【例2-4】下面示例显示的类有方法、几个static变量和一个static初始块:22任务实现任务实现123分析抽象出类分析抽象出类按照类图编制出类框架按照类图编制出类框架实现出类中的方法实现出类中的方法 45定义主类定义主类创建类的对象创建类的对象23驱动任务二驱动任务二 设计一个人类,其有姓名、年龄和身份默认值为“工人”)三个属性,一个带参构
18、造方法,会说话、会工作等行为。然后设计学生类和教师类,这两个类属性和方法和人类完全一致,只是学生类多了学号这个属性,学生的身份为“学生”;教师类还包含有教师号这个属性,教师的身份为“教师”。并生成若干个学生对象和教师对象,分别输出各对象的信息。24目标及知识点目标及知识点成员变量的隐藏成员变量的隐藏 2成员方法的重写成员方法的重写 3super关关键键字字 4类的继承类的继承1 125类的继承性类的继承性 承继承继Inheritance是一种联结类与类的层次模型。是一种联结类与类的层次模型。继承性是指子类拥有父类的属性和行为。继承意味着继承性是指子类拥有父类的属性和行为。继承意味着“自动自动地
19、拥有地拥有”,即子类中不必重新定义已在父类中定义过的属性,即子类中不必重新定义已在父类中定义过的属性和行为,而它却自动地、隐含地拥有其父类的属性与行为。和行为,而它却自动地、隐含地拥有其父类的属性与行为。 26类继承的实现类继承的实现 Java中的继承是通过中的继承是通过extends关键字来实现的,关键字来实现的,在定义新类时使用在定义新类时使用extends关键字指明新类的父关键字指明新类的父类,就在两个类之间建立了继承关系。类,就在两个类之间建立了继承关系。27类继承的实现类继承的实现-子类声明子类声明修修饰饰符符 class 子子类类名名 extends 父父类类名名 / 类头类头的定
20、的定义义成成员变员变量声明;量声明; / 类类体的定体的定义义成成员员方法定方法定义义; ; 一般地,在类声明中,加入一般地,在类声明中,加入extends子句来创建一个类的子句来创建一个类的子类。子类。extends后即为父类名,若父类名又是某个类的子类,后即为父类名,若父类名又是某个类的子类,则新定义的类也是其父则新定义的类也是其父 28类继承的实现类继承的实现-类继承的类继承的传递性传递性 类继承具有传递性,即子类继承父类的所有非私有成员,类继承具有传递性,即子类继承父类的所有非私有成员,也继承父类的父类直至祖先所有的非私有成员。继承是也继承父类的父类直至祖先所有的非私有成员。继承是传递
21、的,这正体现了大自然中特殊与一般的关系。传递的,这正体现了大自然中特殊与一般的关系。【例【例2-5】v 设计一个长方体类Cube,它继承自例矩形类Rectangle,它除了有矩形类的长、宽属性和计算面积的方法外还有表示长方体高的成员变量height、以及计算长方体体积的方法volume()。 / 矩形类矩形类class Rectangle double length; / 长长double width; / 宽宽double area() / 求长方形的面积求长方形的面积return length * width;void setDim(double w, double l) / 设置长方形的
22、长和宽设置长方形的长和宽width = w;length = l; / 长方体类,继承于长方体类,继承于Rectangle类类class Cube extends Rectangle double height; / 高高public Cube(double width, double length, double height) / 构造方法构造方法this.width = width;this.length = length;this.height = height;double volume() / 求长方体的体积求长方体的体积return area() * height; /主类拥有主
23、类拥有main方法的类)方法的类)public class Test public static void main(String args) Cube c = new Cube(1, 2, 3); System.out.println(长长: + c.length + t宽宽: + c.width + t高高: + c.height);System.out.println(长方体的体积长方体的体积: + c.volume(); 成员的覆盖成员的覆盖 如果有一个名为如果有一个名为B的子类和一个名为的子类和一个名为A的父类,它们出现了的父类,它们出现了相同的成员时,在子类相同的成员时,在子类B中
24、直接访问同名成员会得到什么中直接访问同名成员会得到什么结果?结果? / 父类父类Aclass A int x = 100;public void display() System.out.println(执行父类执行父类A的的display()方法方法);System.out.println(SuperClass A: + x);/ 子类子类B,继承于父类,继承于父类Aclass B extends A int x = 200; / 在子类在子类B中父类中父类A的同名变量的同名变量x被隐藏被隐藏public void display() / 方法的重写方法的重写System.out.print
25、ln(执行子类执行子类B的的display()方法方法);System.out.println(SubClass B: + x); / 直接输出为子类变量直接输出为子类变量xpublic static void main(String args) B b = new B();b.display();执执行行结结果是?果是?执行子类执行子类B的的display()方方法法SubClass B: 20031任务实现任务实现123分析抽象出类分析抽象出类按照类图编制出类框架按照类图编制出类框架实现类中的方法实现类中的方法45定义主类定义主类创建类的对象创建类的对象 访问对象访问对象32驱动任务三驱动
26、任务三设计一个人类,有姓名、年龄两个属性,一个无参构造方法用于将属性初始化为其默认值),一个带参构造方法,会说话、会工作等行为。然后设计学生类和教师类,它们都是派生自人类的子类,其中学生类还包含有学号属性,有自己的说话和工作方式;教师类还包含有教师号属性,也有自己的说话和工作方式。建立若干个学生对象和教师对象,分别输出各对象的信息。33目标及知识点目标及知识点方法的重载与重写方法的重载与重写 2类的多态特性类的多态特性 1 134重载重载 在在Java中,同一个类中如果同时存在两个以上的方法有中,同一个类中如果同时存在两个以上的方法有同一个名字,在这种情况下,我们说方法被重载了,这个同一个名字
27、,在这种情况下,我们说方法被重载了,这个过程被称为方法重载。过程被称为方法重载。35【例【例2-10】v 使用类的重载构造方法生成不同的长方形对象,计算各长方形的面积。class Rectangle double length; / 长长 double width; / 宽宽 / 定定义义三个重三个重载载的构造方法的构造方法 public Rectangle() / 无参构造方法无参构造方法 length = 1.0;width = 1.0; public Rectangle(double length) / 带带参构造方法参构造方法 this.length = length;this.wid
28、th = length; public Rectangle(double length, double width)/带带参构造方法参构造方法 this.length = length;this.width = width; public double area() / 求求长长方形的面方形的面积积 return length * width; public void display() System.out.println(长长方形的面方形的面积积是是: + this.area(); public class RectangleDemopublic static void main (String args) Rectangle rect1 = new Rectangle(); / 调调用无参构造方法用无参构造方法 rect1.display(); Rectangle rect2 = new Rectangle(6); rect2.display(); Rectangle rect3 = new Rectangle(10,20); rect3.display();长方形的面积是:长方形的面积是:1.0长方形的面积是:长方形的面积是:36.0长方形的面积是:长方形的面积是:2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河北省人教版八年级物理上册第10章同步练习题
- IMA2026中国制造业ESG合规成本分析报告
- 再生羊毛闭环回收体系商业化落地难点与项目投资安全边际测算
- 元宇宙虚拟舞会资产对实体金粉面具市场的挤出效应
- 从传统手工艺到精密制造铜万字夹项目技术壁垒与标准化生产困境破局
- 2026年湖南网络工程职业学院高职单招笔试英语试题库含答案解析3套试卷
- 2026年湖南安全技术职业学院高职单招笔试化学试题库含答案解析2套试卷
- 2026年湖北国土资源职业学院高职单招笔试语文试题库含答案解析2套试卷
- 2026年海南科技职业学院高职单招笔试职业技能测验试题库含答案解析3套试卷
- 2026年浙江纺织服装职业技术学院高职单招笔试职业技能测验试题库含答案解析3套试卷
- GB/T 9489-2024刚玉粉化学分析方法
- 特高压架空输电线路岩土工程特殊地质条件勘测工作的基本内容与要求
- 某县农村地籍和房屋调查技术设计书
- 工程结构数字图像法检测技术规程
- DL∕T 1518-2016 变电站噪声控制技术导则
- JBT 7016-2017 巷道堆垛起重机
- DL-T5153-2014火力发电厂厂用电设计技术规程
- (正式版)JBT 7122-2024 交流真空接触器 基本要求
- 《Baby》Justin-Bieber版歌词完整版打印下载打印
- 基层安全生产监管面临的困惑和对策模板范本
- 城市轨道交通车站设备(高职)PPT完整全套教学课件
评论
0/150
提交评论