面向对象程序设计简介汇总课件.ppt

上传人(卖家):晟晟文业 文档编号:4941496 上传时间:2023-01-27 格式:PPT 页数:35 大小:252.50KB
下载 相关 举报
面向对象程序设计简介汇总课件.ppt_第1页
第1页 / 共35页
面向对象程序设计简介汇总课件.ppt_第2页
第2页 / 共35页
面向对象程序设计简介汇总课件.ppt_第3页
第3页 / 共35页
面向对象程序设计简介汇总课件.ppt_第4页
第4页 / 共35页
面向对象程序设计简介汇总课件.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、2面向对象程序设计简介面向对象程序设计简介如何为标准如何为标准javajava库中的类创建对象库中的类创建对象如何编写自己的类如何编写自己的类3“拿来主义拿来主义”;重用;重用;先数据,再算法;先数据,再算法;类类(class)(class):类似一种:类似一种“模板模板”;对象对象(object)(object):实例:实例(instance)(instance);封装封装(encapsulation)(encapsulation):数据隐藏;:数据隐藏;实例字段实例字段(instance field)(instance field):数据成员;:数据成员;方法方法(method)(meth

2、od);继承继承(inheritance)(inheritance)4 现实生活现实生活中的对象中的对象class Car int color_number;int door_number;int speed;void brake()void speedUp();void slowDown()计算机中计算机中的对象原型的对象原型5什么是类?什么是类?类是描述对象的类是描述对象的“基本原型基本原型”,它定义一种对象,它定义一种对象所能拥有的数据和能完成的操作所能拥有的数据和能完成的操作,在在JAVAJAVA中中,类是类是程序的基本单元程序的基本单元什么是对象?什么是对象?程序中的对象是类的一个实

3、例,是一个软件单元,程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成它由一组结构化的数据和在其上的一组操作构成variablesmethods6什么是封装什么是封装?封装把对象的所有组成部分组合在一起,封装定封装把对象的所有组成部分组合在一起,封装定义了程序如何引用对象的数据,封装实际上使用义了程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。和访问数据的程度。公有数据公有数据私有数据私有数据 方法方法数据数据 方法方法对象对象A对象对象B7什么是子类什么是子类?子类

4、是作为另一个类的扩充或修正所定义的一个类子类是作为另一个类的扩充或修正所定义的一个类bicycleMountain bikesRacing bikesTandem bikes8对象的特征对象的特征对象的行为(对象的行为(behaviorbehavior)对象的状态(对象的状态(statestate)对象的身份(对象的身份(identityidentity)类的所有对象都支持相同的行为类的所有对象都支持相同的行为每个对象都保存着表明其当前特征的信息每个对象都保存着表明其当前特征的信息每个对象都有唯一的每个对象都有唯一的IDID9类之间的关系依赖(use a)如果类A的方法操作了类B中的对象,则A

5、依赖B聚合(has a)包含继承(is a)若类A继承了类B,则类A不仅继承了类B的方法,而且还具有更多的功能10class Car int color_number;int door_number;int speed;push_break()add_oil()class Trash_Car extends Car double amount;fill_trash()11何时选择继承性何时选择继承性?一个很好的经验一个很好的经验:“B:“B是一个是一个A A吗吗?”?”如果是则让如果是则让B B做做A A的子类的子类常犯的错误常犯的错误A A有一个有一个B B吗吗?例如让汽例如让汽车轮子成为汽

6、车的子类是车轮子成为汽车的子类是错误的错误的12数据对象数据函数函数函数函数函数方法方法OOP方式传统方式13类库类库(又称运行时库)则提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口接口。Java语言的类库类库是一组由程序开发人员或软件供应商编写好的Java 程序模块,每个模块通常提供一种特定的功能和操作任务。这样,编程时就可以根据程序设计的需要从Java语言的类库类库中调用相应的类。14要想掌握好要想掌握好JavaJava语言面向对象程序设计的语言面向对象程序设计的编程方法,编写出高质量的程序,编程方法,编写出高质量的程序,就就必须必须对对JavaJava语言的类库有足够的

7、了解语言的类库有足够的了解。importimport语句引入它所在的系统类或系统类语句引入它所在的系统类或系统类所在的包所在的包构造对象构造对象用和类同名的构造函数创建对象用和类同名的构造函数创建对象 Date today=Date today=new Date();new Date();Date day;/Date day;/此时此时dayday没有指向任何对象没有指向任何对象对象变量不包含对象,只是指向对象对象变量不包含对象,只是指向对象(引用引用)举例说明举例说明p96-97p96-97:打印当月日历:打印当月日历 15系统定义的类,虽然实现了许多常见的功能,但是在JavaJava语言语

8、言程序设计中,用户仍要根据编程的需要来定义一些类类。类类作为复合数据类型数据类型,它封装了一类对象的域和方法。创建一个类类,就是创建一个新的数据类型,实例化一个类就得到一个具体的对象。16class NameOfClassconstructor1constructor2method1method2field1field217class Employee public Employee(String n,double s,int year,int month,int day)name=n;salary=s;GregorianCalendar calendar1=new GregorianCale

9、ndar(year,month-1,day);hireDay=calendar1.getTime();private String name;private double salary;private Date hireDay;public void print()System.out.println(name+salary+,+hireDay);public void raiseSalary(double byPercent)salary*=1+byPercent/100;构造函数构造函数数据成员数据成员方法成员方法成员18public class EmployeeTest public s

10、tatic void main(String args)Employee staff=new Employee3;staff0=new Employee(Harry Hacker,35000,1989,10,1);staff1=new Employee(Carl Cracker,75000,1987,12,15);staff2=new Employee(Tony Tester,38000,1990,3,15);for(int i=0;i 3;i+)staffi.print();staffi.raiseSalary(5);staffi.print();System.out.println();1

11、9单个源文件中可以放多个类;也可以把每个类放在一个单独的源文件;操作EmployeeTest和Employee20方法成员一般用public;数据成员一般用private;private保证这些数据只能被类本身的方法访问,实现了封装不要对数据应用public修饰符数据成员本身可以是对象:类中常常含有类类型的数据成员构造函数相关构造函数和类同名一个类可以由多个构造函数构造函数的参数不定构造函数没有返回值构造函数总是和new一起使用不要在构造函数中定义和数据成员同名的变量21公共的数据成员的访问方法:如getName();比较书上p102和ppt中的这个程序问题:为什么ppt的程序没有getNam

12、e()方法对于一个数据成员既读取、又设置,我们的工作有哪些?p106Employee类中的方法成员可以访问类型为Employee的任何对象中的私有字段p108final数据成员构造对象时必须被初始化设定后,不允许在修改22静态字段:类字段它是属于类,而不是属于某个对象的 class Employee private int id;private static int nextId=1;静态常量public数据也不怕了,因为有final注意一定要用类名来访问,如Math.PI;System.out23静态方法静态方法只能访问静态数据,不能访问实例数据 public static int getN

13、extId()return nextId;int n=Employee.getNextId();问题:static可以省略吗?可以省略吗?实例方法可以访问静态数据,但必须通过对象来调用。24main()方法public static void main(String args)main()方法不对任何对象施加操作!它是属于类的每一个类都可以有一个main()方法。这在对类进行单元测试时(unit testing)是一个很不错的技巧实例分析p113 例4.325java语言总是传值调用方法不能改变基本类型的参数(p115)返回后,仍保持原来的值方法可以改变对象参数的状态此时传的是对象的引用方法不

14、能让对象参数指向新的对象举例分析p118 例4.426它是用来定义对象的初始状态的构造函数的重载(overloading)相同的名字,不同的参数(个数、类型)返回值类型不作为重载的条件之一任何方法成员都可以重载 eg:String的indexOf()方法27默认构造函数如果没有编写构造函数,系统会自动提供一个默认构造函数;它把所有的实例数据成员设置为默认值:数字变量设为0 布尔变量设为false 对象变量设为null实例数据成员和局部变量不同:后者必须显式的初始化;而前者可以自动的初始化如果存在其他构造函数,系统不会提供默认构造函数的。p12028显式字段初始化在类的定义中简单的把值赋给任何字

15、段 class Employee private String name=“”;构造函数执行之前,赋值会先被执行用this去调用同一类中的其他构造函数this()此时必须式构造函数的第一个语句29初始化块除了:构造函数初始化数据成员/声明中赋值,初始化块也可以初始化数据成员初始化块会首先被运行,然后才是构造函数的主体;1、private static int nextId=1;2、static Random generator=new Random();nextId=generator.nextInt(10000);30构造函授小结:重载的构造函数使用this()调用另一个构造函数默认构造函数

16、对象初始化块静态初始化块数据成员初始化演示程序p125 例4.5析构函数和垃圾自动回收机制31包的组织按照嵌套层次的方式所有的标准包都从属于java和javax使用包是保证类名的唯一性如同文件系统中的文件名packageA.Employee和packageB.Employee是不同的类嵌套的包之间没有任何关系java.util和java.util.jar无关java.*不能替代java.util.*和java.sql.*32使用包的方式import解决类名冲突的问题java.util和java.sql中都含有Date类,如果不指明就会出现编译错误解决:在每个类前都加上完整的包名如何加入包以前我们没有使用包默认包演示程序p12933设置类路径为编译器和字节码解释器制定-classpath选项设置环境变量CLASSPATH类路径并不是默认查询当前路径,需要显式的设置34类注释方法注释字段注释(通常指静态常量)通用注释包和概述注释提取注释javadoc Data.java35一定要让数据私有一定要初始化数据不要在类中使用过多基本类型并非所有字段都需要独自的字段访问方法和更改方法为类定义使用标准格式分解职责太多的类让类和方法的名字反映它们的职责

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

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


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

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


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