教学课件第3章面向对象程序设计

上传人:cl****1 文档编号:568765728 上传时间:2024-07-26 格式:PPT 页数:55 大小:460.97KB
返回 下载 相关 举报
教学课件第3章面向对象程序设计_第1页
第1页 / 共55页
教学课件第3章面向对象程序设计_第2页
第2页 / 共55页
教学课件第3章面向对象程序设计_第3页
第3页 / 共55页
教学课件第3章面向对象程序设计_第4页
第4页 / 共55页
教学课件第3章面向对象程序设计_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《教学课件第3章面向对象程序设计》由会员分享,可在线阅读,更多相关《教学课件第3章面向对象程序设计(55页珍藏版)》请在金锄头文库上搜索。

1、第3章 面向对象程序设计第第3章章 面向对象程序设计面向对象程序设计面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/20241第3章 面向对象程序设计面向对象程序设计的基本思想面向对象程序设计的基本思想?面向对象程序设计面向对象程序设计(OOP) 传统:面向过程传统:面向过程对象例子对象例子汽车:车轮、发动机、方向盘、座椅、车门和窗汽车:车轮、发动机、方向盘、座椅、车门和窗狗:动物的子类狗:动物的子类将将数据数据(属性属性)和和方法方法(行为或功能行为或功能)封装封装到类到类(classes)中中

2、对象对象(objects): 类的实例或类本身类的实例或类本身三个基本特性:三个基本特性:封装性封装性、继承性继承性和和多态性多态性7/26/20242第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/20243第3章 面向对象程序设计类的定义类的定义类的定义格式如下:类的定义格式如下:类修饰词类修饰词 class 类名类名 extends 父类名父类名 implements 接接口名称列表口名称列表 类体类体7/26/20244第3章 面向对象程序设

3、计多个类组成的程序多个类组成的程序很多很多Java程序需要多个类完成一项任务程序需要多个类完成一项任务一个文件一般只含有一个类一个文件一般只含有一个类每个文件的长度一般不要太长每个文件的长度一般不要太长最长一般不要超过最长一般不要超过2000行行7/26/20245第3章 面向对象程序设计方法定义方法定义与与C+程序不同的是程序不同的是: 每个方法都必须隶属于某个类每个方法都必须隶属于某个类方法定义的格式方法定义的格式: 方法修饰词方法修饰词 返回类型返回类型 方法名方法名(方法的参数列表方法的参数列表) 方法体方法体 返回类型返回类型: 返回数据的数据类型返回数据的数据类型除了构造方法,一般

4、要求返回类型除了构造方法,一般要求返回类型: 要么为要么为void ,要么为,要么为某种数据类型某种数据类型int、byte、float或或String最多只能返回一个值最多只能返回一个值方法名方法名: 任何一个合法的标识符任何一个合法的标识符参数列表参数列表:用逗号用逗号(,)分隔开分隔开7/26/20246第3章 面向对象程序设计返回控制返回控制如果没有值返回如果没有值返回: return; / 退出该方法退出该方法或者遇到该方法的最后一个或者遇到该方法的最后一个“”,则退出,则退出该方法该方法如果有值返回如果有值返回: return 表达式表达式; / 退出该方法退出该方法返回该表达式的

5、值返回该表达式的值7/26/20247第3章 面向对象程序设计构造方法构造方法构造方法构造方法在创建新的实例对象时起作用在创建新的实例对象时起作用构造方法构造方法通常用来初始化实例对象,例如通常用来初始化实例对象,例如: 初始初始化成员域或设置工作环境化成员域或设置工作环境构造方法构造方法的特点的特点:与类同名与类同名没有返回值没有返回值可以含有多种可以含有多种构造方法构造方法(重载重载)但必须具有不同的参数列表但必须具有不同的参数列表7/26/20248第3章 面向对象程序设计默认的构造方法默认的构造方法如果没有显式地定义类的构造方法,则系统会为该类定如果没有显式地定义类的构造方法,则系统会

6、为该类定义一个默认的构造方法。该构造方法不含任何参数。义一个默认的构造方法。该构造方法不含任何参数。这个默认的构造方法首先调用其父类的不含任何参数的构造这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员域变量方法,然后初始化新生成的实例的各个成员域变量默认值默认值: 基本数值类型基本数值类型: 0; boolean: false; 引用数据类型引用数据类型: null最好自己写构造方法最好自己写构造方法一旦在类中定义了构造方法,系统就不会再创建这个默一旦在类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。认的不含参数的构造方法。7/26/

7、20249第3章 面向对象程序设计域域别名别名: 成员变量成员变量域域Java成员变量成员变量C+.类的成员类的成员: 域和方法域和方法7/26/202410第3章 面向对象程序设计成员变量成员变量(域域) 和和 局部变量局部变量在方法内部定义的变量称为局部变量在方法内部定义的变量称为局部变量局部变量只能在方法内部使用局部变量只能在方法内部使用7/26/202411第3章 面向对象程序设计变量的作用域范围变量的作用域范围作用域范围作用域范围:程序中能够使用该变量:程序中能够使用该变量(域域与局部变量与局部变量)的范围的范围分类分类: 类作用域范围类作用域范围和和块作用域范围块作用域范围7/26

8、/202412第3章 面向对象程序设计类作用域范围类作用域范围从类定义的第一个从类定义的第一个“”开始,到开始,到 最后一最后一个个“”结束结束超出类的范围,类的成员方法不能直接通超出类的范围,类的成员方法不能直接通过它的名称进行访问过它的名称进行访问例如例如:成员域成员域7/26/202413第3章 面向对象程序设计块作用域范围块作用域范围从变量声明之处,到该块的最后一个从变量声明之处,到该块的最后一个“”例如例如: 局部变量与成员方法的参数局部变量与成员方法的参数如果局部变量名与成员域名相同,则如果局部变量名与成员域名相同,则成员域会被隐藏成员域会被隐藏可以通过关键字可以通过关键字this

9、进行访问,进行访问,如如: this.域名域名7/26/202414第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/202415第3章 面向对象程序设计继承性继承性继承性继承性 软件重用的一种方法软件重用的一种方法根据已有的类创建新的类根据已有的类创建新的类采纳了旧的类的属性采纳了旧的类的属性(域域)及其行为及其行为(方法方法)增加了新的能力增加了新的能力子类继承法父类子类继承法父类子类增加了新的成员域或新的成员方法子类增加了新的成员域或新的成员方法

10、有时可以理解成有时可以理解成: (但不绝对但不绝对!)子类对象子类对象是是一种特殊的父类对象一种特殊的父类对象7/26/202416第3章 面向对象程序设计继承性继承性的实现的实现采用关键字采用关键字extendspublic class J_HelloApplet extends Applet / / End of class: J_HelloApplet7/26/202417第3章 面向对象程序设计关键字关键字: instanceof运算符运算符: instanceof例如例如:if (p instanceof Circle)上面的条件为上面的条件为 true, 当且仅当引用当且仅当引用p

11、所指向的所指向的对象是类对象是类Circle(或其或其子类子类)的实例对象的实例对象7/26/202418第3章 面向对象程序设计多重继承多重继承在有些计算机语言中,允许一个类有多在有些计算机语言中,允许一个类有多个直接父类。这种继承关系称为个直接父类。这种继承关系称为多重继多重继承承Java不支持不支持多重继承多重继承Java 允许一个类有多个直接父接口允许一个类有多个直接父接口(interface) 7/26/202419第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接

12、口内部类内部类7/26/202420第3章 面向对象程序设计多态性的种类多态性的种类1)静态的多态性静态的多态性重载重载2)动态的多态性动态的多态性覆盖覆盖7/26/202421第3章 面向对象程序设计静态的多态性静态的多态性(重载重载)在编译时就能够被识别在编译时就能够被识别针对的是同一个类内的同名方法针对的是同一个类内的同名方法例如例如: public int square(int x) return x * x; public double square(double x) return x * x;7/26/202422第3章 面向对象程序设计识别重载方法识别重载方法识别标志识别标志:

13、参数的个数、类型、数据类型的排列顺序参数的个数、类型、数据类型的排列顺序返回值不能做为识别的标志返回值不能做为识别的标志7/26/202423第3章 面向对象程序设计动态多态性动态多态性(覆盖覆盖)在程序运行时才被识别在程序运行时才被识别重写父类的方法重写父类的方法要求相同的声明要求相同的声明例如例如:public class J_HelloApplet extends Applet public void paint(Graphics g) g.drawString(Hello Applet., 25, 25); / End of method: paint / End of class:

14、J_HelloApplet7/26/202424第3章 面向对象程序设计动态多态性动态多态性(覆盖覆盖)用父类的引用指向子类的对象用父类的引用指向子类的对象在运行时,程序可以在运行时,程序可以“正确正确”识别并调识别并调用子类的方法用子类的方法7/26/202425第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/202426第3章 面向对象程序设计包包可以将一组相关的类或接口封装在包可以将一组相关的类或接口封装在包(package)里,从而更好地管理

15、已经开发里,从而更好地管理已经开发的的Java代码代码包含组织类与接口的目录结构包含组织类与接口的目录结构方便程序重用方便程序重用7/26/202427第3章 面向对象程序设计创建包创建包创建创建public类类如果类不是如果类不是public, 则通常只能在同一包内使用则通常只能在同一包内使用(或派生子类或派生子类)选取一个包名选取一个包名(package)并在源程序中增加一条并在源程序中增加一条package语句语句编译,生成编译,生成.class文件文件 (放在相应的目录下放在相应的目录下)通过通过import语句,加入到其它程序中语句,加入到其它程序中命名规则命名规则: Interne

16、t域名的逆序域名的逆序 + 其它名其它名一般全部采用小写一般全部采用小写ASCII字母字母例如例如, package ; package ;7/26/202428第3章 面向对象程序设计注意事项注意事项建包的建包的package语句必须是源程序文件的语句必须是源程序文件的第一条语句第一条语句7/26/202429第3章 面向对象程序设计Java 包包Java系统提供了很多已经写好的包系统提供了很多已经写好的包数学计算、输入数学计算、输入/输出、字符串操作输出、字符串操作尽量利用已有的包、避免重复工作尽量利用已有的包、避免重复工作使用包中类使用包中类利用利用import 语句指定类的位置语句指定

17、类的位置例如例如: import ;7/26/202430第3章 面向对象程序设计包包包包java.lang包包java.util7/26/202431第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/202432第3章 面向对象程序设计类成员的封装性类成员的封装性成员成员(域或方法域或方法)的访问控制方式的访问控制方式:1) public2) private3) protected4) default(缺省方式缺省方式)7/26/202433第3章

18、面向对象程序设计成员的访问控制方式成员的访问控制方式: public则该成员可以被任何类中的方法访问则该成员可以被任何类中的方法访问表明对外开放的方式表明对外开放的方式少量少量(或者没有或者没有) public 域域部分部分 public 方法方法 7/26/202434第3章 面向对象程序设计成员的访问控制方式成员的访问控制方式: private目的目的: 隐藏具体的实现细节隐藏具体的实现细节只有同一个类的成员方法才能访问私有只有同一个类的成员方法才能访问私有成员成员域常常是域常常是private 采用采用 public “get” 方法方法读取数据读取数据采用采用 public “set”

19、方法方法写数据写数据7/26/202435第3章 面向对象程序设计成员的访问控制方式成员的访问控制方式: protected介于介于public 和和private之间之间同一个包内的所有类的所有方法都能访同一个包内的所有类的所有方法都能访问该成员问该成员如果不在同一个包内的类的方法要访问如果不在同一个包内的类的方法要访问该成员,则该类必须是该成员所在的类该成员,则该类必须是该成员所在的类的子类的子类7/26/202436第3章 面向对象程序设计成员的访问控制方式成员的访问控制方式: default (缺省方式缺省方式)只有在同一个包内的类的方法才能访问只有在同一个包内的类的方法才能访问该方法

20、该方法 7/26/202437第3章 面向对象程序设计类成员封装性总结类成员封装性总结 修饰词修饰词 同一个类同一个类 同一个包同一个包 子类子类 所有类所有类 public允许访问允许访问 允许访问允许访问 允许访问允许访问 允许访问允许访问 protected允许访问允许访问 允许访问允许访问 允许访问允许访问 default允许访问允许访问 允许访问允许访问 private允许访问允许访问7/26/202438第3章 面向对象程序设计类的访问控制方式类的访问控制方式两种方式两种方式: public或或默认方式默认方式(default)默认方式默认方式只有同个包内的类的才能访问只有同个包内

21、的类的才能访问7/26/202439第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/202440第3章 面向对象程序设计接口接口(interface)接口接口(interface)就象是一种特殊的类就象是一种特殊的类成员方法成员方法: abstract成员域成员域: final和和static接口接口(interface)中所有的方法和域必须中所有的方法和域必须都是都是 public的的每个接口一般定义在一个每个接口一般定义在一个.java 文件中文

22、件中 7/26/202441第3章 面向对象程序设计实例实例例例1: 通过接口定义一些常量通过接口定义一些常量public interface Constantspublic static final int ONE = 1;public static final int TWO = 2;public static final int THREE = 3; / End of interface: Constants例例2:interface J_Shape / This method cannot have a body. public abstract void mb_draw(Graphi

23、cs2D g); / End of interface: J_Shape7/26/202442第3章 面向对象程序设计注意事项注意事项接口中成员方法的默认方式是接口中成员方法的默认方式是 public 和和 abstract接口中成员域的默认方式是接口中成员域的默认方式是public、 static和和final7/26/202443第3章 面向对象程序设计优点优点一个类可以继承多个接口一个类可以继承多个接口例如例如:public class A extends B implements C, D 7/26/202444第3章 面向对象程序设计总结总结: 接口的使用方法接口的使用方法一个类实现

24、接口一个类实现接口( interface)多个接口采用逗号分隔多个接口采用逗号分隔类中必须定义接口中的所有方法类中必须定义接口中的所有方法这些方法必须具有相同的声明方式这些方法必须具有相同的声明方式7/26/202445第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/202446第3章 面向对象程序设计内部类内部类定义在其它类内部的类称为定义在其它类内部的类称为内部类内部类内部类有些类似于类的成员域或成员方内部类有些类似于类的成员域或成员方法法7/2

25、6/202447第3章 面向对象程序设计实例实例: J_Test.java/ J_Test.java: Jun-Hai Yong, 2003class J_A class J_B void mb_f1() System.out.println(mb_ f1(); / End of method: J_B:mb_f1() / End of class: J_B void mb_f2() J_B b=new J_B(); return b; / End of method: J_A:mb_f2() / End of class: J_A7/26/202448第3章 面向对象程序设计匿名内部类匿名内

26、部类没有类名没有类名常常用在图形用户界面设计常常用在图形用户界面设计(GUI)中,进中,进行各种事件处理行各种事件处理例如例如: 鼠标事件、按钮事件和键盘事件等鼠标事件、按钮事件和键盘事件等7/26/202449第3章 面向对象程序设计匿名内部类匿名内部类省略关键字省略关键字class、extends和和implements, 并并且没有修饰词且没有修饰词 (如如: public、protected等等等等) 匿名内部类优点匿名内部类优点: 可能简单、直接可能简单、直接匿名内部类缺点匿名内部类缺点: 可能很难阅读可能很难阅读太长的类不要写成匿名内部类太长的类不要写成匿名内部类匿名内部类合理利用

27、,可能可以稍微简化程匿名内部类合理利用,可能可以稍微简化程序;如果误用,则有可能很理解序;如果误用,则有可能很理解7/26/202450第3章 面向对象程序设计实例实例import .*;/.jButton1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) / Do something . );/./ Interface: / void actionPerformed(ActionEvent e) import .*;class MyActionListener impleme

28、nts ActionListener public void actionPerformed(ActionEvent e) / Do something . / . jButton1.addActionListener ( new MyActionListener() ); .7/26/202451第3章 面向对象程序设计本章小结本章小结面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类7/26/202452第3章 面向对象程序设计作业作业1.习题习题3.62.习题习题3.87/26/202453第3章 面向对象程序设计引用声明引用声明本课件来源于本课件来源于(或参考了或参考了)下面的书及其下面的书及其课件课件:雍俊海雍俊海. Java 程序设计程序设计. 北京北京: 清华大清华大学出版社学出版社, 2004.7/26/202454第3章 面向对象程序设计参考文献参考文献本课件的参考文献与下面书的参考文献相同本课件的参考文献与下面书的参考文献相同雍俊海雍俊海. Java 程序设计程序设计. 北京北京: 清华大清华大学出版社学出版社, 2004.7/26/202455

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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