【教学课件】第3章面向对象程序设计.ppt

上传人:wuy****n92 文档编号:69866944 上传时间:2023-01-10 格式:PPT 页数:55 大小:460.97KB
返回 下载 相关 举报
【教学课件】第3章面向对象程序设计.ppt_第1页
第1页 / 共55页
【教学课件】第3章面向对象程序设计.ppt_第2页
第2页 / 共55页
点击查看更多>>
资源描述

《【教学课件】第3章面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章面向对象程序设计.ppt(55页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

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

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

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

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

6、参数。义一个默认的构造方法。该构造方法不含任何参数。这个默认的构造方法首先调用其父类的不含任何参数的构造这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员域变量方法,然后初始化新生成的实例的各个成员域变量默认值默认值:基本数值类型基本数值类型:0;boolean:false;引用数据类型引用数据类型:null最好自己写构造方法最好自己写构造方法一旦在类中定义了构造方法,系统就不会再创建这个默一旦在类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。认的不含参数的构造方法。1/9/20239第3章 面向对象程序设计域域别名别名:成员变量成员变

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

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

9、程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类1/9/202315第3章 面向对象程序设计继承性继承性继承性继承性 软件重用的一种方法软件重用的一种方法根据已有的类创建新的类根据已有的类创建新的类采纳了旧的类的属性采纳了旧的类的属性(域域)及其行为及其行为(方法方法)增加了新的能力增加了新的能力子类继承法父类子类继承法父类子类增加了新的成员域或新的成员方法子类增加了新的成员域或新的成员方法有时可以理解成有时可以理解成:(但不绝对但不绝对!)子类对象子类对象是是一种特殊的父类

10、对象一种特殊的父类对象1/9/202316第3章 面向对象程序设计继承性继承性的实现的实现采用关键字采用关键字extendspublic class J_HelloApplet extends Applet /End of class:J_HelloApplet1/9/202317第3章 面向对象程序设计关键字关键字:instanceof运算符运算符:instanceof例如例如:if(p instanceof Circle)上面的条件为上面的条件为 true,当且仅当引用当且仅当引用p所指向的所指向的对象是类对象是类Circle(或其或其子类子类)的实例对象的实例对象1/9/202318第3

11、章 面向对象程序设计多重继承多重继承在有些计算机语言中,允许一个类有多在有些计算机语言中,允许一个类有多个直接父类。这种继承关系称为个直接父类。这种继承关系称为多重继多重继承承Java不支持不支持多重继承多重继承Java 允许一个类有多个直接父接口允许一个类有多个直接父接口(interface)1/9/202319第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类1/9/202320第3章 面向对象程序设计多态性的种类多态性的种类1)静态的多态性静态的多态性重载

12、重载2)动态的多态性动态的多态性覆盖覆盖1/9/202321第3章 面向对象程序设计静态的多态性静态的多态性(重载重载)在编译时就能够被识别在编译时就能够被识别针对的是同一个类内的同名方法针对的是同一个类内的同名方法例如例如:public int square(int x)return x*x;public double square(double x)return x*x;1/9/202322第3章 面向对象程序设计识别重载方法识别重载方法识别标志识别标志:参数的个数、类型、数据类型的排列顺序参数的个数、类型、数据类型的排列顺序返回值不能做为识别的标志返回值不能做为识别的标志1/9/2023

13、23第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:J_HelloApplet1/9/202324第3章 面向对象程序设计动态多态性动态多态性(覆盖覆盖)用父类的引用指向子类的对象用父类的引用指向子类的对象在

14、运行时,程序可以在运行时,程序可以“正确正确”识别并调识别并调用子类的方法用子类的方法1/9/202325第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类1/9/202326第3章 面向对象程序设计包包可以将一组相关的类或接口封装在包可以将一组相关的类或接口封装在包(package)里,从而更好地管理已经开发里,从而更好地管理已经开发的的Java代码代码包含组织类与接口的目录结构包含组织类与接口的目录结构方便程序重用方便程序重用1/9/202327第3章 面向

15、对象程序设计创建包创建包创建创建public类类如果类不是如果类不是public,则通常只能在同一包内使用则通常只能在同一包内使用(或派生子类或派生子类)选取一个包名选取一个包名(package)并在源程序中增加一条并在源程序中增加一条package语句语句编译,生成编译,生成.class文件文件(放在相应的目录下放在相应的目录下)通过通过import语句,加入到其它程序中语句,加入到其它程序中命名规则命名规则:Internet域名的逆序域名的逆序+其它名其它名一般全部采用小写一般全部采用小写ASCII字母字母例如例如,package;package;1/9/202328第3章 面向对象程序设

16、计注意事项注意事项建包的建包的package语句必须是源程序文件的语句必须是源程序文件的第一条语句第一条语句1/9/202329第3章 面向对象程序设计Java 包包Java系统提供了很多已经写好的包系统提供了很多已经写好的包数学计算、输入数学计算、输入/输出、字符串操作输出、字符串操作尽量利用已有的包、避免重复工作尽量利用已有的包、避免重复工作使用包中类使用包中类利用利用import 语句指定类的位置语句指定类的位置例如例如:import;1/9/202330第3章 面向对象程序设计包包包包java.lang包包java.util1/9/202331第3章 面向对象程序设计本章总体纲要本章总

17、体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类1/9/202332第3章 面向对象程序设计类成员的封装性类成员的封装性成员成员(域或方法域或方法)的访问控制方式的访问控制方式:1)public2)private3)protected4)default(缺省方式缺省方式)1/9/202333第3章 面向对象程序设计成员的访问控制方式成员的访问控制方式:public则该成员可以被任何类中的方法访问则该成员可以被任何类中的方法访问表明对外开放的方式表明对外开放的方式少量少量(或者没有或者没有)public

18、 域域部分部分 public 方法方法 1/9/202334第3章 面向对象程序设计成员的访问控制方式成员的访问控制方式:private目的目的:隐藏具体的实现细节隐藏具体的实现细节只有同一个类的成员方法才能访问私有只有同一个类的成员方法才能访问私有成员成员域常常是域常常是private 采用采用 public“get”方法方法读取数据读取数据采用采用 public“set”方法方法写数据写数据1/9/202335第3章 面向对象程序设计成员的访问控制方式成员的访问控制方式:protected介于介于public 和和private之间之间同一个包内的所有类的所有方法都能访同一个包内的所有类的

19、所有方法都能访问该成员问该成员如果不在同一个包内的类的方法要访问如果不在同一个包内的类的方法要访问该成员,则该类必须是该成员所在的类该成员,则该类必须是该成员所在的类的子类的子类1/9/202336第3章 面向对象程序设计成员的访问控制方式成员的访问控制方式:default(缺省方式缺省方式)只有在同一个包内的类的方法才能访问只有在同一个包内的类的方法才能访问该方法该方法 1/9/202337第3章 面向对象程序设计类成员封装性总结类成员封装性总结 修饰词修饰词 同一个类同一个类 同一个包同一个包 子类子类 所有类所有类 public允许访问允许访问 允许访问允许访问 允许访问允许访问 允许访

20、问允许访问 protected允许访问允许访问 允许访问允许访问 允许访问允许访问 default允许访问允许访问 允许访问允许访问 private允许访问允许访问1/9/202338第3章 面向对象程序设计类的访问控制方式类的访问控制方式两种方式两种方式:public或或默认方式默认方式(default)默认方式默认方式只有同个包内的类的才能访问只有同个包内的类的才能访问1/9/202339第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类1/9/202340

21、第3章 面向对象程序设计接口接口(interface)接口接口(interface)就象是一种特殊的类就象是一种特殊的类成员方法成员方法:abstract成员域成员域:final和和static接口接口(interface)中所有的方法和域必须中所有的方法和域必须都是都是 public的的每个接口一般定义在一个每个接口一般定义在一个.java 文件中文件中 1/9/202341第3章 面向对象程序设计实例实例例例1:通过接口定义一些常量通过接口定义一些常量public interface Constantspublic static final int ONE=1;public static

22、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(Graphics2D g);/End of interface:J_Shape1/9/202342第3章 面向对象程序设计注意事项注意事项接口中成员方法的默认方式是接口中成员方法的默认方式是 public 和和 abstract接口中成员域的默认方式是接口中成员域的默认方式是publ

23、ic、static和和final1/9/202343第3章 面向对象程序设计优点优点一个类可以继承多个接口一个类可以继承多个接口例如例如:public class A extends B implements C,D 1/9/202344第3章 面向对象程序设计总结总结:接口的使用方法接口的使用方法一个类实现接口一个类实现接口(interface)多个接口采用逗号分隔多个接口采用逗号分隔类中必须定义接口中的所有方法类中必须定义接口中的所有方法这些方法必须具有相同的声明方式这些方法必须具有相同的声明方式1/9/202345第3章 面向对象程序设计本章总体纲要本章总体纲要面向对象程序设计的基本思想

24、面向对象程序设计的基本思想类、域和方法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类1/9/202346第3章 面向对象程序设计内部类内部类定义在其它类内部的类称为定义在其它类内部的类称为内部类内部类内部类有些类似于类的成员域或成员方内部类有些类似于类的成员域或成员方法法1/9/202347第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_f

25、1()/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_A1/9/202348第3章 面向对象程序设计匿名内部类匿名内部类没有类名没有类名常常用在图形用户界面设计常常用在图形用户界面设计(GUI)中,进中,进行各种事件处理行各种事件处理例如例如:鼠标事件、按钮事件和键盘事件等鼠标事件、按钮事件和键盘事件等1/9/202349第3章 面向对象程序设计匿名内部类匿名内部类省略关键字省略关键字class、extends和和implements,并并且没有修饰

26、词且没有修饰词(如如:public、protected等等等等)匿名内部类优点匿名内部类优点:可能简单、直接可能简单、直接匿名内部类缺点匿名内部类缺点:可能很难阅读可能很难阅读太长的类不要写成匿名内部类太长的类不要写成匿名内部类匿名内部类合理利用,可能可以稍微简化程匿名内部类合理利用,可能可以稍微简化程序;如果误用,则有可能很理解序;如果误用,则有可能很理解1/9/202350第3章 面向对象程序设计实例实例import.*;/.jButton1.addActionListener(new ActionListener()public void actionPerformed(ActionEv

27、ent e)/Do something.);/./Interface:/void actionPerformed(ActionEvent e)import.*;class MyActionListener implements ActionListener public void actionPerformed(ActionEvent e)/Do something./.jButton1.addActionListener (new MyActionListener();.1/9/202351第3章 面向对象程序设计本章小结本章小结面向对象程序设计的基本思想面向对象程序设计的基本思想类、域和方

28、法类、域和方法继承性继承性多态性多态性包包封装性封装性接口接口内部类内部类1/9/202352第3章 面向对象程序设计作业作业1.习题习题3.62.习题习题3.81/9/202353第3章 面向对象程序设计引用声明引用声明本课件来源于本课件来源于(或参考了或参考了)下面的书及其下面的书及其课件课件:雍俊海雍俊海.Java 程序设计程序设计.北京北京:清华大清华大学出版社学出版社,2004.1/9/202354第3章 面向对象程序设计参考文献参考文献本课件的参考文献与下面书的参考文献相同本课件的参考文献与下面书的参考文献相同雍俊海雍俊海.Java 程序设计程序设计.北京北京:清华大清华大学出版社学出版社,2004.1/9/202355

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com