java面向对象简介.ppt
《java面向对象简介.ppt》由会员分享,可在线阅读,更多相关《java面向对象简介.ppt(126页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Version 3.0Java语言与面向对象程序设语言与面向对象程序设计计Java&Object Oriented ProgrammingJava&Object Oriented Programming Version 3.0第三章第三章类和对象类和对象目标目标类的设计类的设计对象创建及对象使用对象创建及对象使用构造方法意义及使用构造方法意义及使用3 3 抽象抽象 抽象抽象是从特定的实例中抽取共同的性质以是从特定的实例中抽取共同的性质以形成一般化概念的过程。形成一般化概念的过程。张三,李四张三,李四-人类;人类;人类人类-王五王五4 4抽象思想在软件设计的应用:抽象思想在软件设计的应用:问题领
2、域问题领域各种各种类类程序程序对象对象对象对象对象对象对象对象5 5抽象思想在软件设计的应用:抽象思想在软件设计的应用:超市超市销售问题销售问题员工类员工类商品类商品类供货商供货商程序程序(运行)(运行)对象对象对象对象对象对象对象对象静态程序静态程序6 6类与对象类与对象类(类(class)是既包括数据又包括作用于)是既包括数据又包括作用于数据的一组操作的封装体。数据的一组操作的封装体。对象(对象(object)是类的实例()是类的实例(instance)。7 78 8封装封装封装性就是把对象的属性和服务结合成一个封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部独
3、立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:细节,包含两个含义:9 9类实现了封装类实现了封装电视机类电视机类 音量音量100.00 亮度亮度57.00对象的属性.调节音量调节亮度对象提供的服务这就样这就样实现了封实现了封装装1、把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。1010类实现了封装类实现了封装运动员类运动员类 血压血压110 心率心率60对象的属性:反映对象的状态。.跑睡眠对象的行为:可以改变对象状态(又称服务)这就样这就样实现了封实现了封装装2、信息隐蔽。即尽可能隐蔽对象的内部细节,对外形成一个边界或者说形成一道屏障,只保留有限的对外接
4、口使之与外部发生联系。1111类类设计的两大要素:设计的两大要素:成员变量成员变量成员函数或者成员方法成员函数或者成员方法1212创建类创建类 classnametypevariable1;typevariableN;typemethodname1(parameter-list)/方法体方法体typemethodnameN(parameter-list)/方法体方法体 Java中定义类的通用格式:中定义类的通用格式:成员变量(数据)成员变量(数据)成员方法成员方法(对数据的(对数据的操作)操作)1313电视机类电视机类 音量音量100.00 亮度亮度57.00调节音量调节亮度Class Tel
5、evsion private float volume=100.00f;private float brightness=57.00f;public float adjustVolume().;public float adjustBright();1414成员变量设计:成员变量设计:确定变量的数据类型:确定变量的数据类型:运动员类的心率?int float;银行帐号的利率?int float;确定变量的访问存取类型:确定变量的访问存取类型:原则尽量用private,体现数据隐藏特性;变量名尽量体现实际意义,增强可读性。变量名尽量体现实际意义,增强可读性。width,height等。Kuand
6、u,gaodu或aa,bb等不建议15151616成员方法(成员函数)成员方法(成员函数)()publicvoidsetExchangeRate(doublerate)exchangeRate=rate;StatementsModifierReturn TypeMethod NameParameter1717定义类定义类声明类声明类修饰符 class 类 extends 父类 implements 接口列表声明成员变量声明成员变量public class Date1/类声明 int year,month,day;/声明成员变量1818定义类定义类声明成员方法声明成员方法修饰符 返回值类型 方法
7、(参数列表)语句序列;return 返回值;声明声明main方法方法public static void main(String args)【例】声明日期类。1919对象对象可可以以把把类类看看作作一一个个模模板板,按按照照类类模模板板所所定定义义的的一一个个个个具具体体的的对对象象称称作作类类的的实实例例,或或称作对象。称作对象。苹果类苹果类2020对象引用对象引用对象引用:对象引用:对象引用可以理解为对象引用可以理解为对象的名字对象的名字,指向具体指向具体对象。对象。例如:例如:Date1 deadline=new Date1();deadline内存内存成员变量成员变量成员方法2121创
8、建对象创建对象使用下列语法可创建对象:使用下列语法可创建对象:new 构造函数构造函数关键字关键字 new 通常称为创建运算符,用于分通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。配对象内存,并将该内存初始化为缺省值。一旦一旦 new 完成分配和初始化内存,它就将完成分配和初始化内存,它就将调用构造函数来执行对象初始化。调用构造函数来执行对象初始化。当创建一个类时,只是创当创建一个类时,只是创建了一种新的数据类型建了一种新的数据类型(模版)。对象是类的具(模版)。对象是类的具体存在实例体存在实例classTestpublicstaticvoidmain(Stringargs)
9、Date1f=newDate1();创建对象创建对象2222创建对象创建对象对象实例化对象实例化类 对象=new 类的构造方法(参数列表)Date1 aday=new Date1();2323 使用对象使用对象引用对象的成员变量和调用对象方法引用对象的成员变量和调用对象方法对象.成员变量对象.成员方法(参数列表)aday.year=2007;/引用对象的成员变量aday.setDate(2006,1,28);/调用对象的方法2424使用对象使用对象对象的引用模型对象的引用模型2525生产对象实例的行为生产对象实例的行为生产对象的生产对象的-构造方法构造方法编程中很多问题来源于对变量不适当的初始
10、化,由此发明了用构造函数产生新对象。2626Java 的的构造方法构造方法publicparameters)public Date2(int y,int m,int d)修饰的,没有返回值,Statements修饰符修饰符类名(同名)类名(同名)参数列表参数列表2727构造方法构造方法构造方法构造方法声明构造方法 真正的初始化再构造函数里public class Date2 public Date2(int y,int m,int d)/声明构造方法 /构造方法与类同名,构造方法返回该类的一个实例 year=y;month=m;day=d;publicDate2()构成方法重载 Date2 a
11、day=new Date2(2006,1,28);调用2828构造方法的种种规矩构造方法的种种规矩构造方法特点:构造方法特点:(1)构造方法的方法名与类名相同。(2)构造方法没有返回类型。New(3)构造方法的主要作用是完成对类对象的初始化工作。(4)构造方法一般不由编程人员显式直接调用。(5)在创建一个类的新对象的同时,系统会自动调用该类的构造方法为新对象初始化。2929方法重载(方法重载(overloading)方法重载是方法重载是Java实现面向对象的多态性机制实现面向对象的多态性机制的一种方式。的一种方式。同一个类中多个方法有相同的名字,不同同一个类中多个方法有相同的名字,不同的参数列
12、表,这种情况称为方法重载的参数列表,这种情况称为方法重载。返回类型不同并不足以构成方法重载。返回类型不同并不足以构成方法重载。当重载方法被调用时,编译器根据参数的当重载方法被调用时,编译器根据参数的类型和数量来确定实际调用哪个重载方法类型和数量来确定实际调用哪个重载方法的版本。的版本。参数个数,参数个数,参数类型参数类型3030方法重载示例方法重载示例classCalculationpublicvoidadd(inta,intb)intc=a+b;System.out.println(两个整数相加得两个整数相加得 +c);publicvoidadd(floata,floatb)floatc=a
13、+b;System.out.println(两个浮点数相加得两个浮点数相加得+c);publicvoidadd(Stringa,Stringb)Stringc=a+b;System.out.println(两个字符串相加得两个字符串相加得 +c);classCalculationDemopublicstaticvoidmain(Stringargs)Calculationc=newCalculation();c.add(10,20);c.add(40.0F,35.65F);c.add(早上早上,好好);方法的重载方法的重载编译器决定编译器决定调用版本调用版本3131方法的重载方法的重载成员方法
14、重载成员方法重载构造方法(构造方法(类名相同)类名相同)重载重载重载构造函数提供了一组创建对象的方式,可以根据需要决定是否带初始参数和带几个初始参数 3232构造方法重载构造方法重载Date2 aday1=new Date2();Date2 aday2=new Date2(2006,2,28);Date2 aday3=new Date2(aday2);【例例】3333使用拷贝构造方法复制对象使用拷贝构造方法复制对象 Date2 aday3=new Date2(aday2);/由已知对象创建新对象 3434关于构造方法声明和使用的几点说明关于构造方法声明和使用的几点说明 1 Java 为每一个类
15、自动提供缺省构造函数为每一个类自动提供缺省构造函数 系统给加一个无参无内容的构造函数(前提自己一系统给加一个无参无内容的构造函数(前提自己一个也不写)个也不写)2 一旦创建了自己的构造函数,缺省的构造函数将一旦创建了自己的构造函数,缺省的构造函数将不复存在。不复存在。【例例】构造方法与成员方法的不同之处?3535this引用引用访问本类的成员变量和成员方法this.成员变量(this.可以忽略没有影响)除了成员变量和后面的参数名相同的时候,系统不能识别,结果出错了this.成员方法(参数列表)调用本类重载的构造方法this(参数列表)指代对象本身this3636一讲一讲Java的包的包-Pac
16、kage包是组织包是组织类类的一的一种单位。种单位。好象小学老好象小学老师给分的值师给分的值日小组。日小组。包名包名成员变量成员方法成员变量成员方法成员变量成员方法成员变量成员方法3737访问控制符访问控制符访问控制符:访问控制符:类访问控制符(public,默认friendly;成员变量和方法访问控制符(public,private,protected,默认)3838类访问控制符类访问控制符-public 公共访问控制符public Java中类的访问控制符:public,即公共的。一个类被声明为公共类,表明它可以被所有的其他类所访问和引用,这里的访问和引用是指程序的其他部分可以创建这个类的
17、对象、从而访问这个类内部可见的成员变量和调用它的可见的方法。3939类访问控制符类访问控制符-Publicpackage1publicpackage24040类访问控制符默认型类访问控制符默认型空白空白package1默认(默认(friendly)package24141public Class Televsion private float volume=100.00f;private float brightness=57.00f;public float adjustVolume().;public float adjustBright();class Televsion private
18、 float volume=100.00f;private float brightness=57.00f;public float adjustVolume().;public float adjustBright();4242类的访问控制类的访问控制顶层类只能是顶层类只能是public或默认访问级别或默认访问级别public级别的类可以被同一个包或者其他包级别的类可以被同一个包或者其他包中的类访问中的类访问默认级别的类只能被同一个包中的类访问默认级别的类只能被同一个包中的类访问public class Sample/public级别class Sample /默认访问级别protected
19、 class Sample/非法private class Sample /非法4343成员变量和方法访问控制符成员变量和方法访问控制符面向对象的世界里:面向对象的世界里:程序是由各种类组成。程序是由各种类组成。类中方法和属性(成类中方法和属性(成员变量)访问有一定员变量)访问有一定的规则。的规则。4444谁也别碰我的谁也别碰我的-private public class Televsion private float volume=100.00f;private float brightness=57.00f;public float adjustVolume().;public float
20、 adjustBright();4545谁也别碰我谁也别碰我的的-privatepackage1package2sonprivate4646public void setAge(int age)数据数据 成员变量设置成私有成员变量设置成私有 Set Get if(age0&age100)监测数据监测数据 Set Get this.age=age;else this.age=0;防防错错 public int getAge()return this.age;4747缺省的默认修饰符缺省的默认修饰符空白空白public class Televsion float volume=100.00f;fl
21、oat brightness=57.00f;float adjustVolume().;public float adjustBright();又名包权限或者友善的(又名包权限或者友善的(friendly)修饰符)修饰符4848缺省的默认修饰符缺省的默认修饰符空白空白package1package2sonson默认默认4949照顾后代的照顾后代的protected (继承)其他包中的子类(继承)其他包中的子类(继承)其他包中的子类(继承)其他包中的子类package1package2sonsonprotected5050成员变量或成员方法的访问控制 修修饰饰符符 同同类类 同同包包 不不同同包
22、包子子类类 不不同包非子类同包非子类 public 是是 是是 是是 是是protected 是是 是是 是是默认默认friendly 是是 是是 private 是是 5151成员变量或成员方法的访问控制 包1包2public int v1;protected int v2;int v3private int v4;ClassAClassBClassCClassD extends ClassAClassB,ClassC,ClassD分别可以访问ClassA的哪些成员变量?5252访问控制符总结访问控制符总结成员变量尽量设计成成员变量尽量设计成private,保证数据隐藏特保证数据隐藏特性;性
23、;需要其他包中对象调用的方法设计成需要其他包中对象调用的方法设计成public;当情况不明确时,可以先采用默认类型。也就当情况不明确时,可以先采用默认类型。也就是什么也不加。是什么也不加。5353继承继承父父 类类 子类子类 父类父类/子类是子类是相对的相对的Cow类Lion类Tiger类类Animals类Carnivorous类Herbivorous类Coat类5454什么是继承什么是继承继承的一般含义是指接收来自父母的财产。继承的一般含义是指接收来自父母的财产。换句话来说,继承是子女拥有父母所拥有的换句话来说,继承是子女拥有父母所拥有的财产。财产。面向对象的程序设计中的继承和上述含义类面向
24、对象的程序设计中的继承和上述含义类似,只不过这里继承的实体不是财产,而是似,只不过这里继承的实体不是财产,而是类类,即子类拥有父类的成员变量和方法即子类拥有父类的成员变量和方法。由一个已有的类定义一个新类,称为新类继承已由一个已有的类定义一个新类,称为新类继承已有的类有的类5555继承继承Emoloyee类:类:namesexWorker类:类:namesexcategorydressAllowanceManager类:类:namesexempClassvehicle职员类,具职员类,具有姓名和性有姓名和性别两个属性别两个属性工人类,继承了父工人类,继承了父类的姓名和性别属类的姓名和性别属性外
25、还包含类别和性外还包含类别和是否有服装津贴属性是否有服装津贴属性经理类,还包含经理类,还包含级别和是否配备级别和是否配备交通工具属性交通工具属性5656继承的优点继承的优点继承的优点继承的优点代码的可重用性父类的属性和方法可用于子类设计应用程序变得更加简单可以轻松地自定义子类5757继承原则继承原则子类继承父类的所有成员变量子类继承父类的所有成员变量子类继承父类子类继承父类除构造方法以外除构造方法以外的成员方法,的成员方法,子类不能继承父类的构造方法。因为父类构造子类不能继承父类的构造方法。因为父类构造方法创建的是父类对象,子类必须声明自己的方法创建的是父类对象,子类必须声明自己的构造方法,创
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 简介
限制150内