




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、类和对象第1页,共34页,2022年,5月20日,8点28分,星期二2目标理解 OOP概念理解 OOP编程的思路和方法掌握如何创建类和构造对象掌握方法的重载会用关键字static、final。第2页,共34页,2022年,5月20日,8点28分,星期二3什么是 OOPOOP: Object Oriented Programing 面向对象编程在OOP中,程序由对象组成,这些对象具有某种属性以及对象可执行的某些操作 第3页,共34页,2022年,5月20日,8点28分,星期二4OOP编程思路首先确定要执行的任务。根据任务的描述把类找出来。类确定之后,再去寻找类的方法。根据业务逻辑,使用类的实例(
2、也就是对象)的方法来完成任务。第4页,共34页,2022年,5月20日,8点28分,星期二5OOP与过程编程的不同过程编程的重点在于设计一系列的函数(或者说算法)来解决某一问题。过程编程先确定如何操作数据,然后才确定采用什么样的数据结构。OOP把数据放在首位,然后才考虑在数据上操作的算法。第5页,共34页,2022年,5月20日,8点28分,星期二6Java程序设计Java程序就是类!“万物皆对象”, Java程序就是对象!第6页,共34页,2022年,5月20日,8点28分,星期二7总结OOP编程如何下手? 首先设计类,然后往每个类中添加方法,最后根据业务逻辑调用不同对象的各种方法来完成任务
3、第7页,共34页,2022年,5月20日,8点28分,星期二8类和对象 2-1对象表示现实世界中某个具体的事物。抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程。对象具有两方面的含义: 在现实世界中:是客观世界中的一个实体 在计算机世界中:是一个可标识的存储区域第8页,共34页,2022年,5月20日,8点28分,星期二9类和对象 2-2类是具有共同属性和行为的对象的抽象。类可以定义为数据和方法的集合。类也称为模板,因为它们提供了对象的基本框架。类对象抽象实例化属性或状态操作或行为数据或变量方法封装的实体=数据+方法第9页,共34页,2022年,5月20日,8点28分,星期二10创建类
4、 2-1class name type variable1; type variableN; type methodname1(parameter-list) /方法体 type methodnameN(parameter-list) /方法体 在类中,属性是通过成员变量体现的,而操作是用成员函数(又称为方法)实现的。Java中定义类的通用格式:成员变量(对象属性或实例变量或状态)成员方法(对象行为或操作)第10页,共34页,2022年,5月20日,8点28分,星期二11创建类 2-2可以定义只包含成员变量或只包含方法的类如果一个类只有成员变量,那么这个类不能干任何事情如果想要类能干事情,必须
5、为这个类定义方法因为类的方法可以让其他类通过对象来调用,所以又可称为类的接口第11页,共34页,2022年,5月20日,8点28分,星期二12类修饰符列表类名的规范:描述类的用途;首字母大写;多个单词连写,且每个单词首字母大写。类体主要包含四部分内容:成员变量、构造方法、成员方法、主方法。类修饰符功能无同包访问public完全开放abstract抽象final没有子类第12页,共34页,2022年,5月20日,8点28分,星期二13构造方法的声明构造方法的定义:1、一般为public;2、没有返回类型,不写void;3、与类名同名;4、不能直接调用,由new调用,创建对象;5、主要任务:成员变
6、量的初始化。6、作用:创建对象。public 类名 () 方法体;第13页,共34页,2022年,5月20日,8点28分,星期二14定义方法定义方法的一般格式:access type methodname1(parameter-list) /方法体发往某个对象的消息对应于一个方法调用。作为对消息的响应,对象将执行一个类似于过程体的方法。方法是包含在类中的函数。方法名称,必须返回类型,必须修饰符,可选参数列表,可选举例:public void setdate(int day, int month, int year) day=23; month=7; year=2003;第14页,共34页,20
7、22年,5月20日,8点28分,星期二15成员变量的声明修饰符 变量类型 变量名 = 值所有成员变量,如果不附初值,都有默认初值。成员变量修饰符功能private限制类外访问无同包访问protected同包及子类访问public完全开放static静态final常量volatile可被多个线程访问transient不序列化第15页,共34页,2022年,5月20日,8点28分,星期二16成员方法的声明修饰符 返回值类型 方法名(参数列表) throws 异常类型列表 方法体;成员方法命名规范与成员变量同方法修饰符功能private无protectedpublicstatic静态final不能覆
8、盖native本地方法abstract抽象synchronized同步方法第16页,共34页,2022年,5月20日,8点28分,星期二17高级访问控制总结访问控制private成员缺省的成员protected成员public成员同一类中成员同一包中其他类不同包中子类 不同包中非子类 第17页,共34页,2022年,5月20日,8点28分,星期二18创建对象使用下列语法可创建对象: new 构造方法关键字 new 通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。一旦 new 完成分配和初始化内存,它就将调用构造方法来执行对象初始化。当创建一个类时,只是创建了一种新的数据类型。对
9、象是类的一个实例。class FruitDemo public static void main(String args) Fruit f = new Fruit(true,false,50.0F); 创建对象第18页,共34页,2022年,5月20日,8点28分,星期二19使用对象要想使用对象,必须获得一个对象的引用。一般使用赋值语句,例如: Person ren = new Person();上述形式的赋值语句实际上做了3件事:Person ren:声明了一个Person类型的变量(对象变量)ren,该变量此时不指向任何对象。new Person():生成了一个Person类型的对象,该对
10、象是一个无名对象。:将这个无名对象的引用赋值给对象变量ren当对象变量ren获得了一个对象的引用后,就可以把ren称作是一个Person类型的对象第19页,共34页,2022年,5月20日,8点28分,星期二20变量的作用域按照变量的作用域分类,类中只有两种变量:实例变量:在所有方法之外但在类体中声明或 定义的变量局部变量:在方法中声明或定义的变量实例变量的有效范围是整个类局部变量的有效范围在方法体之中,出了方法体就自动消失了第20页,共34页,2022年,5月20日,8点28分,星期二21变量的初始化任何变量在使用前必须被初始化对于实例变量,Java 编译器会用缺省初始值自动进行初始化对于局
11、部变量, Java 编译器不会自动进行初始化类型缺省值类型缺省值byte(byte)0charu0000 short(short)0float0.0Fint0double0.0Dlong0L对象引用nullbooleanfalse第21页,共34页,2022年,5月20日,8点28分,星期二22方法的参数方法的参数只有两种类型:基本数据类型和对象类型在Java中,参数的传递只有一种方式,就是按值传递(传递自身的拷贝):对于基本数据类型,传递的值就是变量自身的值对于对象类型,传递的值就是对象的引用(而不是对象自身!)第22页,共34页,2022年,5月20日,8点28分,星期二23对象作为参数c
12、lass 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(Day x,Day y) Day temp=y; y=x; x=temp; 引用本身按值传递Day2002,5,30Day2003,7,23obj1obj2xy调用swapobj(obj1,obj2)改变对象状态xy第23页,共34页,2022年,5月20日,8点28分,星期二24this引用
13、public class PassTest int x; PassTest(int x) this.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 的值。 第24页,共34页,2022年,5月20日,8点28分,星期二25方法重载(ove
14、rloading)方法重载是Java实现面向对象的多态性机制的一种方式。同一个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载。当重载方法被调用时,Java编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。方法重载不考虑方法的返回类型。第25页,共34页,2022年,5月20日,8点28分,星期二26方法重载示例class Calculation public void add( int a, int b) int c = a + b; System.out.println(两个整数相加得 + c); public void add( float a, float b)
15、 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);c.add(40.0F, 35.65F); c.add(早上, 好); 编译器决定调用版本第26页,共34页,
16、2022年,5月20日,8点28分,星期二27重载构造函数一个类可以有多个构造函数如果一个类没有定义一个构造函数,Java 编译器将为这个类自动提供缺省构造函数(即无参的构造函数)缺省构造函数将成员变量的值初始化为缺省值一旦创建了自己的构造函数, Java 编译器将不再自动提供无参的构造函数。重载构造函数提供了一组创建对象的方式,可以根据需要决定是否带初始参数。 public class constructOverload int x; constructOverload() x=0; System.out.println(不带参数的构造函数); constructOverload(int x
17、) this.x=x; System.out.println(带一个参数的构造函数); 第27页,共34页,2022年,5月20日,8点28分,星期二28类的静态成员-static类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。 类的静态成员可以与类的名称一起使用,而无需创建类的对象。 静态变量或方法也称为类变量或类方法。用static修饰符修饰,可以是变量、方法或代码块第28页,共34页,2022年,5月20日,8点28分,星期二29静态变量不管创建了类的多少实例,整个类中静态变量的副本只有一个。 引用静态变量的方法:通过引用类的任一实例通过类的名称class StaticDem
18、o static int x = 0; StaticDemo()x+;StaticDemo d1 = new StaticDemo();StaticDemo d2 = new StaticDemo();d1.x = 100 ;d2.x = 200;testVariable = d1.x; 通过类实例访问不是一个好方法StaticDemo d1 = new StaticDemo();StaticDemo d2 = new StaticDemo(); StaticDemo.x = 100;StaticDemo.x = 200;testVariable = StaticDemo.x; 声明为stat
19、ic的变量实质上就是全局变量通过类名访问第29页,共34页,2022年,5月20日,8点28分,星期二30静态方法与静态方法相关的几个要点:类的静态方法只能访问其他的静态成员静态方法没有this静态方法不能被覆盖为非静态方法class StaticFun static int i = 10; int j; static void setValue(int x) j=x;/出错 System.out.println( + i); 不能访问非静态变量j,可以访问静态变量iclass StaticTest static void test() class Staticex extends StaticTest void test() /出错 第30页,共34页,2022年,5月20日,8点28分,星期二31Java类属性和对象属性的初始化顺序首先找到类中的所有静态声明语句(不管位置在哪),把他们初始化为缺省值然后再按照书写顺序依次处理每一个static的东西把对象属性初始化为缺省值按照书写顺序依次处理每一个对象属性的初始化语句最后执行构造函数 第31页,共34页,2022年,5月20日,8点28分,星期二32final 关键字/final类final 修饰符可应用于类、方法和变量。final
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人造板家具香氛融合创新创业项目商业计划书
- 史料、史志编辑AI应用行业深度调研及发展项目商业计划书
- 仪表板故障排查与修复创新创业项目商业计划书
- 书房墙面绿植墙设计创新创业项目商业计划书
- 新型参类中药饮片行业深度调研及发展项目商业计划书
- 徐州工业职业技术学院《写作学与论文写作》2023-2024学年第二学期期末试卷
- 自动化粉体输送与计量系统行业跨境出海项目商业计划书
- 休闲窗帘智能调控创新创业项目商业计划书
- 会计体制管理制度
- 会计明细管理制度
- SAP石油天然气行业方案介绍和演示
- GB/T 43884-2024金属覆盖层钢铁制件的锌扩散层-渗锌技术要求
- DB37∕T242-2021建筑消防设施检测技术规程
- 某化纤毛纺厂总配变电所及高压配电设计
- 2023-2024学年上海市一年级下册期末数学调研试卷(含答案)
- 2024年贵州黔东南州能源投资有限公司招聘笔试参考题库含答案解析
- 一中国核工业发展历
- 健康心理学孙宏伟重点
- 金蝶软件上线总结汇报
- 肺结核防治知识课件
- 国开电大实验训练1 在MySQL中创建数据库和表
评论
0/150
提交评论