最新Java面向对象程序设计与系统开发第2章 面向对象开发特点(共41张PPT课件).pptx

上传人:豆**** 文档编号:33080438 上传时间:2022-08-09 格式:PPTX 页数:41 大小:1.71MB
返回 下载 相关 举报
最新Java面向对象程序设计与系统开发第2章 面向对象开发特点(共41张PPT课件).pptx_第1页
第1页 / 共41页
最新Java面向对象程序设计与系统开发第2章 面向对象开发特点(共41张PPT课件).pptx_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《最新Java面向对象程序设计与系统开发第2章 面向对象开发特点(共41张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新Java面向对象程序设计与系统开发第2章 面向对象开发特点(共41张PPT课件).pptx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、面向对象程序设计面向对象程序设计与系统与系统(xtng)开发开发第第2章章 面向对象开发面向对象开发(kif)特点特点 第一页,共四十一页。2驱动驱动(q dn)任任务务一一 将上一章中的矩形类进行改造,为了(wi le)对象中数据的安全性,其长、宽两个属性在本类创建的对象外不可访问;同时要求当矩形对象产生的时候就已经有具体的长度和宽度,而不是在生成对象后再给长宽赋值。其保留了计算本身周长和面积的功能 第二页,共四十一页。3目标目标(mbio)及知识点及知识点类中类中setter和和getter方法方法 2构造方法构造方法 this、 、static关关键键字字 3类及其成员的访问控制修饰符类

2、及其成员的访问控制修饰符 4类的封装类的封装 1 1第三页,共四十一页。4类的封装性类的封装性 封装(封装(Encapsulation)就是把对象的属性和行为)就是把对象的属性和行为(xngwi)结合成一结合成一个独立的单位,并尽可能隐蔽对象的内部细节。个独立的单位,并尽可能隐蔽对象的内部细节。 第四页,共四十一页。5 Java中的包中的包 Java包(包(package)就是具有一定相关性的)就是具有一定相关性的Java文件文件(wnjin)的集合的集合创建创建(chungjin)包包第五页,共四十一页。6在包中创建在包中创建(chungjin)类类 package 包名包名1.包名包名2.

3、包名包名3. ;第六页,共四十一页。7使用使用(shyng)包包使用使用(shyng)import语语句句:import 包名包名1.类类名或接口名;名或接口名; import 包名包名1.包名包名2.*; ; 直接使用包直接使用包:java.util.ArrayList list = new java.util.ArrayList(); 第七页,共四十一页。8 类的访问类的访问(fngwn)权限权限 一个一个类仅类仅有两个可能的有两个可能的访问权访问权限:默限:默认认(mrn)的和公有的和公有( (public)的。当一个)的。当一个类类被声明被声明为为public时时, ,该该类类可被任何

4、包的代可被任何包的代码访问码访问;如果一个;如果一个类为类为默默认认的的访问权访问权限,那么限,那么仅仅能由同一包内的其他代能由同一包内的其他代码码所所访问访问。 。第八页,共四十一页。9类成员类成员(chngyun)的访问权限的访问权限 Java类的成员类的成员(chngyun)变量和成员变量和成员(chngyun)方方法的访问权限法的访问权限修饰符无类修饰符类成员修饰符privatedefaultprotectedpublic同一类同一个包不同包的子类不同包非子类第九页,共四十一页。10举例说明举例说明v/ 源文件Rectangle.javavpackage com.bean; /本类属于

5、com包的bean子包下vpublic class Rectangle / 该类的权限为publicv / 私有(syu)的成员变量v private double length;v private double width;v / 求长方形的面积,注意该方法权限v double area()v return length * width;v v /*打印输出,公共的成员方法*/v public void display()v / 调用当前对象的成员变量vSystem.out.println(长: + length + t宽: + width);v / 调用当前对象的成员方法vSystem.o

6、ut.println(长方形的面积是: + area();v v第十页,共四十一页。11举例说明举例说明v/ 源文件RectangleDemo.javav package com.demo; / 该类属于该类属于com.demo包下包下vimport com.bean.*; / 导入导入com.bean包中所有的类包中所有的类vpublic class RectangleDemovpublic static void main (String args)v/ 调用带参构造方法创建一个长方形对象rectvRectangle rect = new Rectangle();v/ rect.width

7、 = 2; /private不允许类外部调用v/ rect.length = 4; / private不允许类外部调用v/ System.out.println(长方形的面积是: + rect.area(); / 默认(mrn)权限不同包的类不能调用v rect.display(); / 调用对象rect的成员方法vv第十一页,共四十一页。12getter、setter方法方法(fngf) 若需要在其他类中访问私有成员,可以通过非私有的若需要在其他类中访问私有成员,可以通过非私有的setter和和getter方法来访问。这样的方法常命名方法来访问。这样的方法常命名(mng mng)为为setX

8、xx()和和getXxx(),分别实现对封装数据的设置和读取操作分别实现对封装数据的设置和读取操作 public void setWidth(double w) / 设置设置(shzh)长方形的宽长方形的宽 width = w; public double getWidth() / 获取长方形的宽获取长方形的宽 return width; public void setLength(double l) / 设置长方形的长设置长方形的长 length = l; public double getLength() / 获取长方形的长获取长方形的长 return length; 第十二页,共四十一页

9、。13类的构造方法类的构造方法 构造方法的一般形式(xngsh)如下 :修修饰饰符符 方法方法(fngf)名名(形式参数列表形式参数列表) / 方法体方法体1、构造方法名与类名相同。、构造方法名与类名相同。2、构造方法不返回任何值,也没有返回类型。、构造方法不返回任何值,也没有返回类型。3、每一个类可以有零个或多个、每一个类可以有零个或多个(du )构造方法,如果没有写构造方构造方法,如果没有写构造方法默认存在一个没有参数的构造方法。法默认存在一个没有参数的构造方法。4、构造方法在创建一个类的对象时由系统自动地调用执行,、构造方法在创建一个类的对象时由系统自动地调用执行,一般不能显式地直接调用

10、。一般不能显式地直接调用。第十三页,共四十一页。14v class Rectanglev double length; / 长v double width; / 宽v / 带参构造方法,用于初始化长方形的长和宽带参构造方法,用于初始化长方形的长和宽v public Rectangle(double w, double l)v width = w;v length = l;v v / 求长方形的面积(min j)v double area()v return length * width;v v 【例例2-2】继续改造继续改造(gizo)长方体类,使对象创建时能自动初始长方体类,使对象创建时能自

11、动初始化化 长方形的尺寸。长方形的尺寸。第十四页,共四十一页。15v public class RectangleDemovpublic 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()方法得到(d do)第一个长方形的面积v System.out.println

12、(第一个长方形的面积是: + area);varea = rect2.area(); / 调用area()方法得到第二个长方形的面积v System.out.println(第二个长方形的面积是: + area);vv 第十五页,共四十一页。16 this关键字关键字 在程序中,可以在任何方法内使用在程序中,可以在任何方法内使用this来引用当前的对象,来引用当前的对象,this就指向了本身就指向了本身(bnshn)这个对象这个对象 / 带带参构造方法,用于初始化参构造方法,用于初始化长长方形的方形的长长和和宽宽 Rectangle(double w, double l) this.width

13、 = w; this.length = l; / 带带参构造方法,用于初始化参构造方法,用于初始化长长方形的方形的长长和和宽宽 Rectangle(double width, double length) this.width = width; / 使用使用this来来访问访问同名同名实实例例(shl)变变量量 this.length = length; 第十六页,共四十一页。17this的使用的使用(shyng)场合场合 v 访问当前(dngqin)对象的数据成员。v 访问当前对象的成员方法 第十七页,共四十一页。18。vclass Rectanglev double length; / 长

14、v double width; / 宽v / 带参构造方法,用于初始化长方形的长和宽带参构造方法,用于初始化长方形的长和宽v Rectangle(double width, double length)v this.width = width; / this关键字表示关键字表示(biosh)当前对象当前对象v this.length = length;v v / 求长方形的面积v double area()v return this.length * this.width;v v / 打印输出v void display()v / 调用当前对象的成员变量vSystem.out.println(

15、长: + this.length + t宽: + this.width);v / 调用当前对象的成员方法vSystem.out.println(长方形的面积是: + this.area();v v【例例2-3】在例在例2-2的基础的基础(jch)上修改上修改Rectangle类的构造方法,类的构造方法,使其形式参数与成员变量名称相同使其形式参数与成员变量名称相同第十八页,共四十一页。19static静态静态(jngti)成员成员-静态类成员静态类成员 被声明为被声明为static的成员变量是静态变量,也称为类变量。的成员变量是静态变量,也称为类变量。静态变量本质上是全局变量。当声明该类的对象静

16、态变量本质上是全局变量。当声明该类的对象(duxing)时,不时,不生成生成static变量的副本,类的所有实例共享同一个变量的副本,类的所有实例共享同一个static变量变量 被声明为被声明为static的成员方法是静态方法,也称为类方法。的成员方法是静态方法,也称为类方法。静态方法有几条限制:静态方法有几条限制:(1)它们仅可以调用其他)它们仅可以调用其他static方法。方法。(2)它们只能访问)它们只能访问static数据成员。数据成员。(3)它们不能以任何方式引用)它们不能以任何方式引用this或或super第十九页,共四十一页。20static静态静态(jngti)成员成员-静态代

17、码块静态代码块static / 程序程序(chngx)块块 静态代码块不是类的方法,没有方法名、返回值和参数表。静态代码块不是类的方法,没有方法名、返回值和参数表。静态代码块也与类方法一样,不能使用静态代码块也与类方法一样,不能使用(shyng)实例变量及方法,实例变量及方法,也不能使用也不能使用this或或super关键字。关键字。 static块块(即静(即静态态代代码块码块),),这这个个块仅块仅在在该类该类被被第一次加第一次加载时执载时执行一次行一次。静。静态态代代码块码块的的语语法格式:法格式:第二十页,共四十一页。21vpublic class UseStaticv static

18、int a = 3; / 静态静态(jngti)变量(类变量),并初始化变量(类变量),并初始化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 / 静态代

19、码块静态代码块v System.out.println(静态代码块执行开始静态代码块执行开始);v b = a * 4; / 初始化静态变量初始化静态变量bv v public static void main(String args)v display(42); / 直接调用静态方法直接调用静态方法v v【例2-4】下面示例显示(xinsh)的类有方法、几个static变量和一个static初始块:第二十一页,共四十一页。22任务任务(rn wu)实现实现123分析分析(fnx)抽象出类抽象出类按照按照(nzho)类图编制出类框架类图编制出类框架实现出类中的方法实现出类中的方法 45定义主类

20、定义主类创建类的对象创建类的对象第二十二页,共四十一页。23驱动驱动(q dn)任任务务二二 设计一个人类,其有姓名、年龄和身份(默认值为“工人(gng rn)”)三个属性,一个带参构造方法,会说话、会工作等行为。然后设计学生类和教师类,这两个类属性和方法和人类完全一致,只是学生类多了学号这个属性,学生的身份为“学生”;教师类还包含有教师号这个属性,教师的身份为“教师”。并生成若干个学生对象和教师对象,分别输出各对象的信息。第二十三页,共四十一页。24目标目标(mbio)及知识点及知识点成员变量的隐藏成员变量的隐藏 2成员方法的重写成员方法的重写 3super关关键键字字 4类的继承类的继承1

21、 1第二十四页,共四十一页。25类的继承性类的继承性 继承(继承(Inheritance)是一种联结类与类的层次模型。)是一种联结类与类的层次模型。继承性是指子类拥有父类的属性和行为。继承意味着继承性是指子类拥有父类的属性和行为。继承意味着“自动自动地拥有地拥有”,即子类中不必重新,即子类中不必重新(chngxn)定义已在父类中定义过的属性定义已在父类中定义过的属性和行为,而它却自动地、隐含地拥有其父类的属性与行为。和行为,而它却自动地、隐含地拥有其父类的属性与行为。 第二十五页,共四十一页。26类继承类继承(jchng)的实现的实现 Java中的继承是通过中的继承是通过extends关键字来

22、实现的,关键字来实现的,在定义新类时使用在定义新类时使用(shyng)extends关键字指明新类的父关键字指明新类的父类,就在两个类之间建立了继承关系。类,就在两个类之间建立了继承关系。第二十六页,共四十一页。27类继承类继承(jchng)的实现的实现-子类声明子类声明修修饰饰符符 class 子子类类名名 extends 父父类类名名 / 类头类头的定的定义义(dngy)成员变量声明;成员变量声明; / 类体的定义类体的定义成员方法定义;成员方法定义; 一般地,在类声明中,加入一般地,在类声明中,加入extends子句来创建一个类的子句来创建一个类的子类。子类。extends后即为父类名后

23、即为父类名(li mn),若父类名,若父类名(li mn)又是某个类的子类,又是某个类的子类,则新定义的类也是其父则新定义的类也是其父 第二十七页,共四十一页。28类继承类继承(jchng)的实现的实现-类继承的传类继承的传递性递性 类继承具有类继承具有传递性传递性,即子类继承父类的所有,即子类继承父类的所有非私有成员非私有成员,也继承父类的父类直至祖先所有的非私有成员。继承是也继承父类的父类直至祖先所有的非私有成员。继承是传递传递(chund)的,这正体现了大自然中特殊与一般的关系。的,这正体现了大自然中特殊与一般的关系。第二十八页,共四十一页。【例例2-5】v 设计一个长方体类Cube,它

24、继承自例矩形类Rectangle,它除了有矩形类的长、宽属性(shxng)和计算面积的方法外还有表示长方体高的成员变量height、以及计算长方体体积的方法volume()。 / 矩形矩形类类class Rectangle double length; / 长长double width; / 宽宽double area() / 求求长长方形的面方形的面积积(min j)return length * width;void setDim(double w, double l) / 设设置置长长方形的方形的长长和和宽宽width = w;length = l; / 长长方体方体类类, ,继继承承(

25、jchng)于于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; /主主类类( (拥拥有有main方法的方法的类类) )public class Test publi

26、c 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(); 第二十九页,共四十一页。成员成员(chngyun)的覆盖的覆盖 如果有一个名为如果有一个名为B的子类和一个名为的子类和一个名为A的父类,它们出现了的父类,它们出现了相同相同(xin tn)的成员时,在子类的成员时,在子类B中直接访问同名成员会得到

27、什么中直接访问同名成员会得到什么结果?结果? / 父父类类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.println(执行子类执行子

28、类B的的display()方法方法);System.out.println(SubClass B: + x); / 直接直接(zhji)输出为子类变量输出为子类变量xpublic static void main(String args) B b = new B();b.display();执执行行结结果是?果是?执行子类执行子类B的的display()方法方法SubClass B: 200第三十页,共四十一页。31任务任务(rn wu)实现实现123分析分析(fnx)抽象出类抽象出类按照类图编制按照类图编制(binzh)出类框架出类框架实现类中的方法实现类中的方法45定义主类定义主类创建类的

29、对象创建类的对象 访问对象访问对象第三十一页,共四十一页。32驱动驱动(q dn)任任务务三三设计一个人类,有姓名、年龄两个属性(shxng),一个无参构造方法(用于将属性(shxng)初始化为其默认值),一个带参构造方法,会说话、会工作等行为。然后设计学生类和教师类,它们都是派生自人类的子类,其中学生类还包含有学号属性(shxng),有自己的说话和工作方式;教师类还包含有教师号属性(shxng),也有自己的说话和工作方式。建立若干个学生对象和教师对象,分别输出各对象的信息。第三十二页,共四十一页。33目标目标(mbio)及知识点及知识点方法的重载与重写方法的重载与重写 2类的多态特性类的多态

30、特性 1 1第三十三页,共四十一页。34重载重载(zhn zi) 在在Java中,同一个类中如果同时存在两个以上的方法有中,同一个类中如果同时存在两个以上的方法有同一个名字,在这种情况下,我们说方法被重载同一个名字,在这种情况下,我们说方法被重载(zhn zi)了,这个了,这个过程被称为方法重载。过程被称为方法重载。第三十四页,共四十一页。35【例例2-10】v 使用(shyng)类的重载构造方法生成不同的长方形对象,计算各长方形的面积。class Rectangle double length; / 长长 double width; / 宽宽 / 定义定义(dngy)三个重载的构造方法三个重

31、载的构造方法 public Rectangle() / 无参构造方法无参构造方法 length = 1.0;width = 1.0; public Rectangle(double length) / 带带参构造方法参构造方法 this.length = length;this.width = length; public Rectangle(double length, double width)/带带参构造方法参构造方法 this.length = length;this.width = width; public double area() / 求求长长方形的面方形的面积积 return

32、 length * width; public void display() System.out.println(长长方形的面方形的面积积是是: + this.area(); public class RectangleDemopublic static void main (String args) Rectangle rect1 = new Rectangle(); / 调调用用(dioyng)无参构造方法无参构造方法 rect1.display(); Rectangle rect2 = new Rectangle(6); rect2.display(); Rectangle rect3

33、 = new Rectangle(10,20); rect3.display();长方形的面积是:长方形的面积是:1.0长方形的面积是:长方形的面积是:36.0长方形的面积是:长方形的面积是:200.0第三十五页,共四十一页。36重写重写 当同名方法同时存在于子类和父类中时当同名方法同时存在于子类和父类中时(zhn sh),对于子类来说就,对于子类来说就是将继承的父类的方法重新写过了,实现方式完全和父类是将继承的父类的方法重新写过了,实现方式完全和父类无关。当调用子类的方法时,运行的是子类重新改写的方无关。当调用子类的方法时,运行的是子类重新改写的方法,而不是父类的方法。法,而不是父类的方法。

34、第三十六页,共四十一页。37【例例2-11】重写方法重写方法(fngf)的调用。的调用。class A void display() System.out.println(这这是父是父类类的方法的方法(fngf);void print() System.out.println(As method print() called!);class B extends A / 子子类类B派生自父派生自父类类Avoid display() / 方法的重写方法的重写System.out.println(这这是子是子类类的方法的方法);public class Test public static void

35、 main(String args) A a1 = new A(); / a1引用引用类类A的的实实例例 a1.display(); a1.print(); A a2 = new B(); / a2引用引用类类B的的实实例,子例,子类对类对象象(duxing)可以看做父可以看做父类对类对象象(duxing) a2.display(); a2.print();结果:结果:这是父类的方法这是父类的方法As method print() called!这是子类的方法这是子类的方法As method print() called!第三十七页,共四十一页。38方法方法(fngf)重写时要遵循三个原则:重

36、写时要遵循三个原则:v 重写方法的返回类型必须(bx)与它所重写的方法相同。v 重写方法不能比它所重写的方法有更严格的访问权限,也就是子类private方法不能覆盖掉父类public的方法。v 重写方法不能比它所重写的方法抛出更多的异常。第三十八页,共四十一页。39任务任务(rn wu)实现实现123分析分析(fnx)抽象出类抽象出类按照按照(nzho)类图编制出类框架类图编制出类框架实现类中的方法实现类中的方法45定义主类定义主类创建类的对象创建类的对象 访问对象访问对象第三十九页,共四十一页。40课堂课堂(ktng)总结总结 v 类的封装v 类的继承(jchng)v 多态第四十页,共四十一页。内容(nirng)总结面向对象程序设计与系统开发。import 包名1.包名2。.*。/本类属于com包的bean子包下。/ 求长方形的面积,注意该方法权限。若需要在其他类中访问私有成员,可以通过非私有的setter。2、构造方法不返回任何值,也没有返回类型(lixng)。/ 带参构造方法,用于初始化长方形的长和宽。/ 调用area()方法得到第二个长方形的面积。和行为,而它却自动地、隐含地拥有其父类的属性与行为。多态第四十一页,共四十一页。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁