Java面向对象程序设计和系统开发第2章面向对象开发特点课件_第1页
Java面向对象程序设计和系统开发第2章面向对象开发特点课件_第2页
Java面向对象程序设计和系统开发第2章面向对象开发特点课件_第3页
Java面向对象程序设计和系统开发第2章面向对象开发特点课件_第4页
Java面向对象程序设计和系统开发第2章面向对象开发特点课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、页,共40页。5 Java中的包 Java包(package)就是具有一定相关性的Java文件的集合创建包第5页,共40页。6在包中创建类 package 包名1.包名2.包名3. ;第6页,共40页。7使用包使用import语句:import 包名1.类名或接口名; import 包名1.包名2.*; 直接使用包:java.util.ArrayList list = new java.util.ArrayList(); 第7页,共40页。8 类的访问权限 一个类仅有两个可能的访问权限:默认的和公有(public)的。当一个类被声明为public时,该类可被任何包的代码访问;如果一个类为默认的

3、访问权限,那么仅能由同一包内的其他代码所访问。第8页,共40页。9类成员的访问权限 Java类的成员变量和成员方法的访问权限修饰符无类修饰符类成员修饰符privatedefaultprotectedpublic同一类同一个包不同包的子类不同包非子类第9页,共40页。10举例说明/ 源文件Rectangle.javapackage com.bean; /本类属于com包的bean子包下public class Rectangle / 该类的权限为public / 私有的成员变量 private double length; private double width; / 求长方形的面积,注意该方

4、法权限 double area() return length * width; /*打印输出,公共的成员方法*/ public void display() / 调用当前对象的成员变量System.out.println(长: + length + t宽: + width); / 调用当前对象的成员方法System.out.println(长方形的面积是: + area(); 第10页,共40页。11举例说明/ 源文件RectangleDemo.javapackage com.demo; / 该类属于com.demo包下import com.bean.*; / 导入com.bean包中所有的

5、类public class RectangleDemopublic static void main (String args)/ 调用带参构造方法创建一个长方形对象rectRectangle rect = new Rectangle();/ rect.width = 2; /private不允许类外部调用/ rect.length = 4; / private不允许类外部调用/ System.out.println(长方形的面积是: + rect.area(); / 默认权限不同包的类不能调用 rect.display(); / 调用对象rect的成员方法第11页,共40页。12getter

6、、setter方法 若需要在其他类中访问私有成员,可以通过非私有的setter和getter方法来访问。这样的方法常命名为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 lengt

7、h; 第12页,共40页。13类的构造方法 构造方法的一般形式如下 :修饰符 方法名(形式参数列表) / 方法体1、构造方法名与类名相同。2、构造方法不返回任何值,也没有返回类型。3、每一个类可以有零个或多个构造方法,如果没有写构造方法默认存在一个没有参数的构造方法。4、构造方法在创建一个类的对象时由系统自动地调用执行,一般不能显式地直接调用。第13页,共40页。14class Rectangle double length; / 长 double width; / 宽 / 带参构造方法,用于初始化长方形的长和宽public Rectangle(double w, double l) widt

8、h = w; length = l; / 求长方形的面积 double area() return length * width; 【例2-2】继续改造长方体类,使对象创建时能自动初始化 长方形的尺寸。第14页,共40页。15public class RectangleDemopublic static void main (String args)/ 调用构造方法初始化每个长方形对象Rectangle rect1 = new Rectangle(10,20); Rectangle rect2 = new Rectangle(3,6);double area; area = rect1.are

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

10、 / 带参构造方法,用于初始化长方形的长和宽 Rectangle(double width, double length) this.width = width; / 使用this来访问同名实例变量 this.length = length; 第16页,共40页。17this的使用场合 访问当前对象的数据成员。访问当前对象的成员方法 第17页,共40页。18。class Rectangle double length; / 长 double width; / 宽 / 带参构造方法,用于初始化长方形的长和宽 Rectangle(double width, double length) this.

11、width = width; / this关键字表示当前对象 this.length = length; / 求长方形的面积 double area() return this.length * this.width; / 打印输出 void display() / 调用当前对象的成员变量System.out.println(长: + this.length + t宽: + this.width); / 调用当前对象的成员方法System.out.println(长方形的面积是: + this.area(); 【例2-3】在例2-2的基础上修改Rectangle类的构造方法,使其形式参数与成员

12、变量名称相同第18页,共40页。19static静态成员-静态类成员 被声明为static的成员变量是静态变量,也称为类变量。静态变量本质上是全局变量。当声明该类的对象时,不生成static变量的副本,类的所有实例共享同一个static变量 被声明为static的成员方法是静态方法,也称为类方法。静态方法有几条限制:(1)它们仅可以调用其他static方法。(2)它们只能访问static数据成员。(3)它们不能以任何方式引用this或super第19页,共40页。20static静态成员-静态代码块static / 程序块 静态代码块不是类的方法,没有方法名、返回值和参数表。静态代码块也与类方

13、法一样,不能使用实例变量及方法,也不能使用this或super关键字。 static块(即静态代码块),这个块仅在该类被第一次加载时执行一次。静态代码块的语法格式:第20页,共40页。21public class UseStatic static int a = 3; / 静态变量(类变量),并初始化 static int b; / 静态变量 int c = 10; / 实例变量 static void display(int x) / 静态方法(类方法) System.out.println(x = + x); System.out.println(a = + a); System.out.

14、println(b = + b); /System.out.println(c = + c);/静态方法不能直接调用非静态成员 static / 静态代码块 System.out.println(静态代码块执行开始); b = a * 4; / 初始化静态变量b public static void main(String args) display(42); / 直接调用静态方法 【例2-4】下面示例显示的类有方法、几个static变量和一个static初始块:第21页,共40页。22任务实现123分析抽象出类按照类图编制出类框架实现出类中的方法 45定义主类创建类的对象第22页,共40页。

15、23驱动任务二 设计一个人类,其有姓名、年龄和身份(默认值为“工人”)三个属性,一个带参构造方法,会说话、会工作等行为。然后设计学生类和教师类,这两个类属性和方法和人类完全一致,只是学生类多了学号这个属性,学生的身份为“学生”;教师类还包含有教师号这个属性,教师的身份为“教师”。并生成若干个学生对象和教师对象,分别输出各对象的信息。第23页,共40页。24目标及知识点成员变量的隐藏 2成员方法的重写 3super关键字 4类的继承11第24页,共40页。25类的继承性 继承(Inheritance)是一种联结类与类的层次模型。继承性是指子类拥有父类的属性和行为。继承意味着“自动地拥有”,即子类

16、中不必重新定义已在父类中定义过的属性和行为,而它却自动地、隐含地拥有其父类的属性与行为。 第25页,共40页。26类继承的实现 Java中的继承是通过extends关键字来实现的,在定义新类时使用extends关键字指明新类的父类,就在两个类之间建立了继承关系。第26页,共40页。27类继承的实现-子类声明修饰符 class 子类名 extends 父类名 / 类头的定义成员变量声明; / 类体的定义成员方法定义; 一般地,在类声明中,加入extends子句来创建一个类的子类。extends后即为父类名,若父类名又是某个类的子类,则新定义的类也是其父 第27页,共40页。28类继承的实现-类继

17、承的传递性 类继承具有传递性,即子类继承父类的所有非私有成员,也继承父类的父类直至祖先所有的非私有成员。继承是传递的,这正体现了大自然中特殊与一般的关系。第28页,共40页。【例2-5】设计一个长方体类Cube,它继承自例矩形类Rectangle,它除了有矩形类的长、宽属性和计算面积的方法外还有表示长方体高的成员变量height、以及计算长方体体积的方法volume()。 / 矩形类class Rectangle double length; / 长double width; / 宽double area() / 求长方形的面积return length * width;void setDim

18、(double w, double l) / 设置长方形的长和宽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; /主类(拥有m

19、ain方法的类)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(); 第29页,共40页。成员的覆盖 如果有一个名为B的子类和一个名为A的父类,它们出现了相同的成员时,在子类B中直接访问同名成员会得到什么结果? / 父类Aclass A int x = 100;publi

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

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

22、象,分别输出各对象的信息。第32页,共40页。33目标及知识点方法的重载与重写 2类的多态特性 11第33页,共40页。34重载 在Java中,同一个类中如果同时存在两个以上的方法有同一个名字,在这种情况下,我们说方法被重载了,这个过程被称为方法重载。第34页,共40页。35【例2-10】使用类的重载构造方法生成不同的长方形对象,计算各长方形的面积。class Rectangle double length; / 长 double width; / 宽 / 定义三个重载的构造方法 public Rectangle() / 无参构造方法 length = 1.0;width = 1.0; pub

23、lic 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 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论