《Java面向对象程序设计与系统开发》课件第2章 面向对象开发特点 .ppt

上传人(卖家):momomo 文档编号:8127303 上传时间:2024-12-05 格式:PPT 页数:40 大小:3.62MB
下载 相关 举报
《Java面向对象程序设计与系统开发》课件第2章 面向对象开发特点 .ppt_第1页
第1页 / 共40页
《Java面向对象程序设计与系统开发》课件第2章 面向对象开发特点 .ppt_第2页
第2页 / 共40页
《Java面向对象程序设计与系统开发》课件第2章 面向对象开发特点 .ppt_第3页
第3页 / 共40页
《Java面向对象程序设计与系统开发》课件第2章 面向对象开发特点 .ppt_第4页
第4页 / 共40页
《Java面向对象程序设计与系统开发》课件第2章 面向对象开发特点 .ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

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

2、ation)就是把对象的属性和行为结合成一)就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。个独立的单位,并尽可能隐蔽对象的内部细节。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类的成员变量和成员方法的访问权限类的成员变量和成员方法的访问权限修饰符无类修饰符类成员修饰符privatedefaultprotectedpub

4、lic同一类同一个包不同包的子类不同包非子类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 /调用当前对象的成员变量vSystem.ou

5、t.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/调用带参构造方法创建一个长方形对象rectvRectangle

6、 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方法来访问。这样的方法常命名为方法来访问。这样的方法常命名为setXxx()和和getXx

7、x(),分别实现对封装数据的设置和读取操作分别实现对封装数据的设置和读取操作 public void setWidth(double w)/设置长方形的宽设置长方形的宽 width=w;public double getWidth()/获取长方形的宽获取长方形的宽 return width;public void setLength(double l)/设置长方形的长设置长方形的长 length=l;public double getLength()/获取长方形的长获取长方形的长 return length;13类的构造方法类的构造方法 构造方法的一般形式如下:修修饰饰符符 方法名方法名(形式

8、参数列表形式参数列表)/方法体方法体1、构造方法名与类名相同。、构造方法名与类名相同。2、构造方法不返回任何值,也没有返回类型。、构造方法不返回任何值,也没有返回类型。3、每一个类可以有零个或多个构造方法,如果没有写构造方、每一个类可以有零个或多个构造方法,如果没有写构造方法默认存在一个没有参数的构造方法。法默认存在一个没有参数的构造方法。4、构造方法在创建一个类的对象时由系统自动地调用执行,、构造方法在创建一个类的对象时由系统自动地调用执行,一般不能显式地直接调用。一般不能显式地直接调用。14v class Rectanglev double length;/长v double width;

9、/宽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 RectangleDemovpublic static void main(String args)v/调用构造方法初始化每个长方形对象

10、调用构造方法初始化每个长方形对象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.println(第二个长方形的面积是:+area);vv 16 this关键字关键字 在程序中,可以在任何方法内使用在

11、程序中,可以在任何方法内使用this来引用当前的对象,来引用当前的对象,this就指向了本身这个对象就指向了本身这个对象 /带带参构造方法,用于初始化参构造方法,用于初始化长长方形的方形的长长和和宽宽 Rectangle(double w,double l)this.width=w;this.length=l;/带带参构造方法,用于初始化参构造方法,用于初始化长长方形的方形的长长和和宽宽 Rectangle(double width,double length)this.width=width;/使用使用this来来访问访问同名同名实实例例变变量量 this.length=length;17t

12、his的使用场合的使用场合 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 v/求长方形的面积v double area()v return this.length*this.width;v v

13、/打印输出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类的构造方法,类的构造方法,使其形式参数与成员变量名称相同使其形式参数与成员变量名称相同19static静态成员静态成员-静态类成员静态类成员 被声明为被声明为static的成员变量是静态变量,也称为类变量。的成员变量是静态变量,也称为类变量

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

15、态代码块static/程序程序块块 静态代码块不是类的方法,没有方法名、返回值和参数表。静态代码块不是类的方法,没有方法名、返回值和参数表。静态代码块也与类方法一样,不能使用实例变量及方法,静态代码块也与类方法一样,不能使用实例变量及方法,也不能使用也不能使用this或或super关键字。关键字。static块块(即静(即静态态代代码块码块),),这这个个块仅块仅在在该类该类被被第一次加第一次加载时执载时执行一次行一次。静。静态态代代码块码块的的语语法格式:法格式:21vpublic class UseStaticv static int a=3;/静态变量(类变量),并初始化静态变量(类变量

16、),并初始化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 /静态代码块静态代码块v System.out.println(静态代码块执行开始静态代码块执行开始);v b=a*4;/初始化静态变量

17、初始化静态变量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类继承的实现类继承的实现-类继承的传递性类继承的传递性 类继承具有类继承具有传递性传递性,即子类继承父类的所有,即子类继承父类的所有非私有成员非私有成员,也继承父类的父类直至祖先所有的非私有成员。继承是也继承父类的父类直至祖先所有的非私有成员。继承是传递的,这正体现了大自然中特殊与一般的关系。传递的,这正体现了大自然中特殊与一般的关系。【例例2

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

22、s 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 public static void main(String args)Cube c=new Cu

23、be(1,2,3);System.out.println(长长:+c.length+t宽宽:+c.width+t高高:+c.height);System.out.println(长长方体的体方体的体积积:+c.volume();成员的覆盖成员的覆盖 如果有一个名为如果有一个名为B的子类和一个名为的子类和一个名为A的父类,它们出现了的父类,它们出现了相同的成员时,在子类相同的成员时,在子类B中直接访问同名成员会得到什么中直接访问同名成员会得到什么结果?结果?/父父类类Aclass A int x=100;public void display()System.out.println(执执行父行父

24、类类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(执行子类执行子类B的的display()方法方法);System.out.println(SubClass B:+x);/直接输出为子类变量直接输出为子类变量xpublic static void main(String args

25、)B b=new B();b.display();执执行行结结果是?果是?执行子类执行子类B的的display()方方法法SubClass B:20031任务实现任务实现123分析抽象出类分析抽象出类按照类图编制出类框架按照类图编制出类框架实现类中的方法实现类中的方法45定义主类定义主类创建类的对象创建类的对象 访问对象访问对象32驱动驱动任任务务三三设计一个人类,有姓名、年龄两个属性,一个无参构造方法(用于将属性初始化为其默认值),一个带参构造方法,会说话、会工作等行为。然后设计学生类和教师类,它们都是派生自人类的子类,其中学生类还包含有学号属性,有自己的说话和工作方式;教师类还包含有教师号

26、属性,也有自己的说话和工作方式。建立若干个学生对象和教师对象,分别输出各对象的信息。33目标及知识点目标及知识点方法的重载与重写方法的重载与重写 2类的多态特性类的多态特性 1 134重载重载 在在Java中,同一个类中如果同时存在两个以上的方法有中,同一个类中如果同时存在两个以上的方法有同一个名字,在这种情况下,我们说方法被重载了,这个同一个名字,在这种情况下,我们说方法被重载了,这个过程被称为方法重载。过程被称为方法重载。35【例例2-10】v 使用类的重载构造方法生成不同的长方形对象,计算各长方形的面积。class Rectangle double length;/长长 double w

27、idth;/宽宽/定义三个重载的构造方法定义三个重载的构造方法 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()/求求长长方形的面方形的面积积 ret

28、urn 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);r

29、ect3.display();长方形的面积是:长方形的面积是:1.0长方形的面积是:长方形的面积是:36.0长方形的面积是:长方形的面积是:200.036重写重写 当同名方法同时存在于子类和父类中时,对于子类来说就当同名方法同时存在于子类和父类中时,对于子类来说就是将继承的父类的方法重新写过了,实现方式完全和父类是将继承的父类的方法重新写过了,实现方式完全和父类无关。当调用子类的方法时,运行的是子类重新改写的方无关。当调用子类的方法时,运行的是子类重新改写的方法,而不是父类的方法。法,而不是父类的方法。37【例例2-11】重写方法的调用。重写方法的调用。class A void display

30、()System.out.println(这这是父是父类类的方法的方法);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 main(String args)A a1=new A();/a1引用引用类类A的的实实例例 a1.display();a1.print();A a

31、2=new B();/a2引用引用类类B的的实实例,子例,子类对类对象可以看做父象可以看做父类对类对象象 a2.display();a2.print();结果:结果:这是父类的方法这是父类的方法As method print()called!这是子类的方法这是子类的方法As method print()called!38方法重写时要遵循三个原则:方法重写时要遵循三个原则:v 重写方法的返回类型必须与它所重写的方法相同。v 重写方法不能比它所重写的方法有更严格的访问权限,也就是子类private方法不能覆盖掉父类public的方法。v 重写方法不能比它所重写的方法抛出更多的异常。39任务实现任务实现123分析抽象出类分析抽象出类按照类图编制出类框架按照类图编制出类框架实现类中的方法实现类中的方法45定义主类定义主类创建类的对象创建类的对象 访问对象访问对象40课堂总结课堂总结 v 类的封装v 类的继承v 多态

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《Java面向对象程序设计与系统开发》课件第2章 面向对象开发特点 .ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|