JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA

上传人:E**** 文档编号:89243648 上传时间:2019-05-22 格式:PPT 页数:35 大小:378.01KB
返回 下载 相关 举报
JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA_第1页
第1页 / 共35页
JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA_第2页
第2页 / 共35页
JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA_第3页
第3页 / 共35页
JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA_第4页
第4页 / 共35页
JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA》由会员分享,可在线阅读,更多相关《JAVA语言面向对象程序设计 教学课件 ppt 作者 马俊 ppt 3JAVA(35页珍藏版)》请在金锄头文库上搜索。

1、第三章面向对象基础,类和对象,2,回顾,Java 具有8种基本数据类型:int、boolean、char、short、long、float 及 double 对应的8种包装类 Java 中的运算符可划分为四大子集:算术运算符、位运算符、关系运算符、逻辑运算符 Java 支持下列控制结构:选择、循环、跳转 数组可用来将同一类型的数据存储在连续的内存位置,3,目标,掌握如何创建类和构造对象 掌握方法的重载和覆盖 了解类的继承 了解包概念,4,类和对象2-1,对象表示现实世界中某个具体的事物。 抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程。 对象具有两方面的含义: 在现实世界中: 是客观

2、世界中的一个实体 在计算机世界中: 是一个可标识的存储区域加操作 对象作为一个可以显现给周围世界的一个实体,是构成物理世界的个体元素。,5,类和对象 2-2,类是具有共同属性和行为的对象的抽象。 类可以定义为数据和方法的集合。 类也称为模板,因为它们提供了对象的基本框架。,类,对象,抽象,实例化,属性或状态,操作或行为,数据或变量,方法,封装的实体=数据+方法,汽车,对象和类既有区别又有联系,类是创建实例对象的代码模板,而对象则是按照类创建出来的一个个实例,有点像汽车的设计图纸和汽车的关系。采用面向对象程序设计技术的原因主要有两个,其一是我们认识世界研究乃至于改造世界都是以“对象”为基本单位而

3、进行的,我们将这一人类活动衍生到计算机编程中来顺理成章;其二是为了提高程序设计的效率,尤其是在越来越复杂问题环境中,解决模块的颗粒度问题,既内聚性和耦合性的分界线问题。,6,抽象原则,抽象就是从大量的普遍的个体中抽象出共有的属性和行为,从而形成一般化概念的过程。在现实世界中,人们正是通过抽象来理解复杂的事物。例如,人们并没有把汽车当作成百上千的零件组成来认识,而是把它当作具有自己特定行为的对象。我们可以忽略发动机、液压传输、刹车系统等如何工作的细节,而习惯于把汽车当作一个整体来认识。,如果从一个抽象模型中剔除足够多的细节,则它将变得足够通用,足以适应于多种情况或场合,这样的抽象常常在程序设计中

4、非常有用。经过对大量事物的抽象和归类,可以形成相应的类属层次,如下图就是一个自然界各事物的一个分类抽象:,7,封装原则,封装原则是一个普适原则,正如我们看到的、我们学习到的、以及我们周围的一切实体,包括动物、植物、各种人造物品都是封装的,一般情况下,我们只能看到这些物体的“外壳”,看不到其内部结构。 这种将内部结构和功能对外隐藏,只留下必需的接口和外界进行能量或信息交流就是封装,比如说我们人类,我们的内脏、血管、神经都被封装在我们皮肤里面,对外表现出来的仅仅是皮肤和五官接口,也就是说我们都是内聚性很强的对象个体,但我们又留有眼耳鼻口等接口,我们通过这些接口在这个世间生存和忙碌。,在面向对象程序

5、设计中,我们应该遵循同样的原则,将对象的内部结构对外作信息隐藏,让外部不可访问,但提供一系列的共有接口,用来进行信息和能量交换。在java语言中,实现封装的关键字是private, 提供接口的关键字是public。,8,继承原则,继承原则也是一个普适原则,正如第一章我们提到的一样,如果没有继承,我们的生物世界就会永远在生物链的底端徘徊,就不会出现如此丰富的生态世界。继承是发展的一部分,只有不断地继承旧的、成熟的东西,才能发展出更新的、更先进的东西,否则,我们就会在原地踏步,永远重复。 在面向对象程序设计中,我们从已经存在的类产生新类的机制,我们也称之为继承,原来存在的类叫父类(或叫基类),新类

6、叫子类(或叫派生类)。子类中会自动拥有父类中的设计代码,继承带来的好处是:一方面可减少程序设计的错误,另一方面,做到了代码复用,可简化和加快程序设计,提高了工作效率。,继承不仅仅是简单的拥有父类的设计代码,继承机制本身就具有进化的能力,跟生物世界一样,子代总是比父代更能适应环境。我们通过对父类的设计作一些局部的修改,使得子类对象具有更好的适应能力和强大的生存能力。,9,多态原则,多态性原则是生物多样性在面向对象程序设计中的应用,正如第一章我们说过的一样,面对同样的刺激、消息等,不同的动物的反应是不一样的。在面向对象程序设计中,如果我们有许多不同的对象,每个对象都具有相应的行为模式(即执行代码)

7、,通过对每个对象发送同样的消息,但每个对象的执行的代码是不一样的,这就是面向对象程序设计中的多态。 多态性(polymorphism)是面向对象编程的基础属性,它允许多个方法使用同一个接口,从而导致在不同的上下文中,对象的执行代码可以不一样。Java从多个方面支持多态性,其中两个方面最为突出。第一个是每个方法都可以被子类重写;第二个是设立interface关键字。,10,创建类,class name type variable1; type variableN; type methodname1(parameter-list) /方法体 type methodnameN(parameter-l

8、ist) /方法体 ,在类中,属性是通过成员变量体现的,而操作是用成员函数(又称为方法)实现的。,Java中定义类的通用格式:,成员变量(对象属性),成员方法 (对象行为或操作),11,定义方法,定义方法的一般格式: access type methodname1(parameter-list) /方法体 ,发往某个对象的消息对应于一个方法调用。作为对消息的响应,对象将执行一个类似于过程体的方法。方法是包含在类中的函数。,举例: public void setdate(int day, int month, int year) day=23; month=7; year=2003; ,12,R

9、eference Types,s1,s2,10001,s2=s1;,a string,10001,class Mydate int year; int month; int day; ,Mydate today=new MyDate(),10008,today,s1=new String(“a string”);,Example: String s1;String s2;,13,Variable vs object,25,a,3000,int a=25;,2004,9,5,year,month,day,Date dt=new Date();,5000,dt,5000,4000,14,对象引用作

10、为参数,class Test int a,b; Test(int i,int j) a=i; b=j; /可以在方法中改变对象状态 void change(Test obj) obj.a=50; obj.b=40; ,当对象作为方法参数时,在方法中只能改变该对象的状态,但不能改变该对象的引用,void swapobj(Date x,Date y) Date temp=y; y=x; x=temp; ,引用本身 按值传递,调用swapobj(obj1,obj2),改变对象状态,15,this引用,public class PassTest int x; PassTest(int x) this.

11、x=x; public void passingValue() System.out.println(“x 等于 “ +x); public static void main(String args) PassTest test = new PassTest(10); test.passingValue(); ,关键字 this 与对象关联 它用于指示当前对象,指明此对象的变量 x 应赋值为通过构造函数传递的自变量 x 的值。,16,访问控制 - private 和 public 封装性,public 声明的数据成员和成员函数可从类外部的任何地方访问。 而private 数据将被隐藏,在类外不

12、可见,这就实现了数据封装的思想。 要从类外操纵private 成员,只能通过类的public或protected成员来实现。,17,方法重载(overloading),方法重载是Java实现面向对象的多态性机制的一种方式。 同一个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载。 返回类型不同并不足以构成方法重载。 当重载方法被调用时,编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。,18,方法重载示例,class Calculation public void add( int a, int b) int c = a + b; System.out.println(

13、“两个整数相加得 “+ c); public void add( float a, float b) float c = a + b; System.out.println(“两个浮点数相加得“+c); public void add( String a, String b) String c = a + b; System.out.println(“两个字符串相加得 “+ c); ,class CalculationDemo public static void main(String args) Calculation c = new Calculation(); c.add(10,20)

14、; c.add(40.0F, 35.65F); c.add(“早上“, “好“); ,编译器决定调用版本,19,构造方法,构造方法名称与类名称相同 构造方法没有返回类型 其任务是在创建对象时初始化其内部状态,class Fruit boolean seedLess; boolean seasonal; float price; Fruit(boolean seed, boolean season, float p) seedLess = seed; seasonal = season; price = p; ,20,创建对象,使用下列语法可创建对象: new 构造函数 关键字 new 通常称为

15、创建运算符,用于分配对象内存,并将该内存初始化为缺省值。 一旦 new 完成分配和初始化内存,它就将调用构造函数来执行对象初始化。,当创建一个类时,只是创建了一种新的数据类型。对象是类的一个实例。,class FruitDemo public static void main(String args) Fruit f = new Fruit(true,false,50.0F); ,创建对象,21,成员变量初始值,Java 保证了在任何代码使用该内存之前,已至少将内存初始化为可预知的缺省值,22,重载构造函数,Java 为每一个类自动提供缺省构造函数 缺省构造函数将成员变量的值初始化为缺省值 一

16、旦创建了自己的构造函数,缺省的构造函数将不复存在。 重载构造函数提供了一组创建对象的方式,可以根据需要决定是否带初始参数。,public class constructOverload int x; constructOverload() x=0; System.out.println(“不带参数的构造函数“); constructOverload(int x) this.x=x; System.out.println(“带一个参数的构造函数“); ,23,get方法和set方法设计,Java语言针对被封装的成员变量可以提供访问的方法: 1.get方法 用来读取对象成员变量的值 2.set方法 用来修改对象成员变量的值,我们正是通过提供一系列的get方法和set方法去读写这些对象内部的成员数据,在

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号