Java技术开发及Eclipse实践(第3节)_第1页
Java技术开发及Eclipse实践(第3节)_第2页
Java技术开发及Eclipse实践(第3节)_第3页
Java技术开发及Eclipse实践(第3节)_第4页
Java技术开发及Eclipse实践(第3节)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA技术开发与Eclipse实践IT教育系列第3节第2页版权声明本课件由浙江浙大网新集团有限公司(以下简称:网新集团)编制,仅本课件由浙江浙大网新集团有限公司(以下简称:网新集团)编制,仅供网新集团培训机构的学员学习使用;供网新集团培训机构的学员学习使用;网新集团享有本课件中的文字叙述、文档格式、插图、照片等所有信息网新集团享有本课件中的文字叙述、文档格式、插图、照片等所有信息资料的版权,受知识产权法及版权法等法律、法规的保护。任何个人或资料的版权,受知识产权法及版权法等法律、法规的保护。任何个人或组织未经网新集团的书面授权许可,均不得以任何形式使用本课件的任组织未经网新集团的书面授权许可

2、,均不得以任何形式使用本课件的任何内容,否则将视为不法侵害,网新集团保留追究侵权人相关法律责任何内容,否则将视为不法侵害,网新集团保留追究侵权人相关法律责任的权利的权利 如您不接受上述声明,请勿使用本课件,并尽快销毁或删除本课件任何如您不接受上述声明,请勿使用本课件,并尽快销毁或删除本课件任何形式的备份;如您使用本课件,将被视为您接受并同意遵守上述声明。形式的备份;如您使用本课件,将被视为您接受并同意遵守上述声明。第3页第一部分基础内容介绍内容提要4.0继承、重载和多态继承、重载和多态5.0进一步的应用进一步的应用第4页4.1 继承、重载和多态-父类和子类(一)u 在面向对象的设计中,常常需要

3、把现实事物抽象到程序世界中,同时,把一般在面向对象的设计中,常常需要把现实事物抽象到程序世界中,同时,把一般意义上事物和更具体化的事物,以一定的层次来设计。以父类和子类的形式来意义上事物和更具体化的事物,以一定的层次来设计。以父类和子类的形式来表现这种关系。表现这种关系。经理经理职员职员通讯父类通讯父类 HTTP通讯子类通讯子类u 父类(又称超类或基类),父类(又称超类或基类),应抽象出所有的子类(又应抽象出所有的子类(又称派生类)共有的特性,称派生类)共有的特性,子类除了拥有父类的相关子类除了拥有父类的相关特性以外,还增加了其它特性以外,还增加了其它只有子类本身才拥有的个只有子类本身才拥有的

4、个性化特性;性化特性;第5页4.2 继承、重载和多态-父类和子类(二)职员经理继承extends第6页u 代码:代码:public class EmployeeString name;int salary;protected void work() /工作工作 protected void getSalary() /领工资领工资public class Manager extends Employeeint manageLevel;public void distributeTask() /分配任务分配任务; 4.2 继承、重载和多态-父类和子类(三)父类设计,拥有父类设计,拥有基本属性或方法

5、基本属性或方法子类通过子类通过extends关键字继承父关键字继承父类类第7页u this是当前对象的引用,一般使用它来调用当前对象的内容,包括成员,是当前对象的引用,一般使用它来调用当前对象的内容,包括成员,方法。方法。public class EmployeeString name;public Employee(String name) = name;4.5 继承、重载和多态this, super(一)当类的成员和参数名都有同一个变量当类的成员和参数名都有同一个变量名时,可用名时,可用this关键字来区分关键字来区分第8页u 使用使用super关键字来调用基类的成员或

6、者方法。关键字来调用基类的成员或者方法。u 如果调用的是基类的构造方法,则必须是第一个语句。如果调用的是基类的构造方法,则必须是第一个语句。public class Manager extends Employeepublic Manager(String sName,String emp)super(sName); /调用了父类的构造方法调用了父类的构造方法 = sName; 4.5 继承、重载和多态this, super(二)super(sName) 表示调用表示调用Employee类中的构造方法,必类中的构造方法,必须放在最前面。须放在最前面。第9页u Java允许方法

7、名称重名,但必须指定不同的参数。可以灵活的调用同允许方法名称重名,但必须指定不同的参数。可以灵活的调用同种类型的操作,但是操作细节不同的过程,如:种类型的操作,但是操作细节不同的过程,如:public void add(int i) /处理过程处理过程1public void add(String s) /处理过程处理过程2public void add(Object obj) /处理过程处理过程3 如果调用如果调用add(2)则调用的是则调用的是“处理过程处理过程1”方法;方法;如果调用如果调用add(“china”)则调用的是则调用的是“处理过程处理过程2”方法;方法;u 重载方法的参数表

8、必须不同,参数个数,类型,顺序有一个不同即可。重载方法的参数表必须不同,参数个数,类型,顺序有一个不同即可。u 程序会根据传入的参数,自动判断需要调用哪个方法。程序会根据传入的参数,自动判断需要调用哪个方法。u 注意注意:构造方法也可以重载。构造方法也可以重载。4.6 继承、重载和多态-重载第10页u 在继承关系中,在子类中可以通过定义和父类相同名字、返回值和参数在继承关系中,在子类中可以通过定义和父类相同名字、返回值和参数的方法,以达到个性化处理的目的,此子类方法就会覆盖父类方法的方法,以达到个性化处理的目的,此子类方法就会覆盖父类方法;例:父类中例:父类中public void add(i

9、nt i) /处理过程处理过程1 子类中子类中public void add(int i) /处理过程处理过程2在调用子类的在调用子类的add方法时,就会执行方法时,就会执行“处理过程处理过程2”4.7 继承、重载和多态-覆盖(重写)覆盖注意:覆盖注意: 子方法的名称、子方法参数及顺序、返回类型必须和父类中的完全相同;子方法的名称、子方法参数及顺序、返回类型必须和父类中的完全相同; 覆盖方法不能比它所覆盖的方法访问性差覆盖方法不能比它所覆盖的方法访问性差(如如: 不可由不可由privatepublic); 覆盖方法不能比它所覆盖的方法抛出更多的异常覆盖方法不能比它所覆盖的方法抛出更多的异常(后

10、面描述后面描述)。第11页u 所有所有Java类默认继承类默认继承Object类类u Object具有以下方法。具有以下方法。u 可以重写从可以重写从Object继承过来的方法,实现个性化的操作。继承过来的方法,实现个性化的操作。4.2 继承、重载和多态Object类第12页4.8 继承、重载和多态理解多态笔笔毛笔钢笔铅笔圆珠笔u 所有笔都可以写字所有笔都可以写字u 所有笔写字的过程都不一样所有笔写字的过程都不一样u 拿到其中一支笔,能执行具有自己特点的写字过程。拿到其中一支笔,能执行具有自己特点的写字过程。第13页u Java的动态绑定:在运行期才确定具体的对象,执行具体对象的方法。的动态绑

11、定:在运行期才确定具体的对象,执行具体对象的方法。u 多态:定义基类的变量,指向某个子类的对象。调用某个方法时,会执多态:定义基类的变量,指向某个子类的对象。调用某个方法时,会执行这个具体子类的实现方法。行这个具体子类的实现方法。4.8 继承、重载和多态-多态u 多态的特点:多态的特点:必须继承,并且重写相关方法必须继承,并且重写相关方法用父类变量来引用子类对象,并调用用父类变量来引用子类对象,并调用Class Test public static void main(String args)Pencil pencil = new Pencil();/铅笔对象铅笔对象Brush brush =

12、 new Brush();/毛笔对象毛笔对象Pen pen = null; /pen,先指向空,先指向空pen = pencil; /引用铅笔对象引用铅笔对象pen.write(); /执行铅笔的写字过程执行铅笔的写字过程pen = brush; /引用毛笔对象引用毛笔对象pen.write(); /同样的调用,执行的是毛同样的调用,执行的是毛笔的写字过程笔的写字过程class Pen void write()/执行写字动作执行写字动作class Pencil extends Pen void write(/铅笔写字铅笔写字)class Brush extends Penvoid write(

13、)/毛笔写字毛笔写字public void writeLetter(Pen pen)pen.wirte();/根据传入的对象不同而执行根据传入的对象不同而执行不同的方法。不同的方法。第14页u 通过通过instanceof运算符,可以确定引用指向的是一个什么类的实例对象运算符,可以确定引用指向的是一个什么类的实例对象4.10 继承、重载和多态-instanceof运算符public void test(Object obj)if(obj instanceof Pencil) System.out.println(“传入的是一个铅笔对象传入的是一个铅笔对象”);else if (obj inst

14、anceof Brush) System.out.println(“传入的是一个毛笔对象传入的是一个毛笔对象”);elseSystem.out.println(“传入的是一个未知对象传入的是一个未知对象”);第15页5.1 进一步的应用-静态static运用(一)u 静态变量:可以在类的所有实例中共享的变量,类似于静态变量:可以在类的所有实例中共享的变量,类似于“全局变量全局变量”;例:例: public class Count private static int counter = 0; public Count()counter+; 每一次初始化每一次初始化Count类的时候,类的时候,

15、counter变量都会累加变量都会累加1, counter的生命的生命周期是整个程序运行过程的始终。周期是整个程序运行过程的始终。u 如果把变量声明为如果把变量声明为private以上的,如以上的,如:public static int counter,则可以在则可以在任何类中都可以直接调用该类的变量,并在整个程序运行期达到数据共享,任何类中都可以直接调用该类的变量,并在整个程序运行期达到数据共享,调用方法为:调用方法为:Count.counter,这种变量声明通常用来存储一些配置信息。这种变量声明通常用来存储一些配置信息。第16页5.2 进一步的应用-静态static运用(二)u 静态方法:

16、在类方法的声明中加入静态方法:在类方法的声明中加入static关键字,该方法就变成了静态方关键字,该方法就变成了静态方法,只有在静态方法里面才可以直接引用该类的静态变量,法,只有在静态方法里面才可以直接引用该类的静态变量,private以上以上的静态方法,可以直接通过的静态方法,可以直接通过.直接调用;直接调用;例:例: public class DateUtil public static String getCurrentDate() /获取当前时间获取当前时间 调用:调用:DateUtil.getCurrentDate()u 静态类:通常一个普通类不允许声明为静态的,只有一个内部类(后面

17、讲静态类:通常一个普通类不允许声明为静态的,只有一个内部类(后面讲到)才可以,这时这个静态内部类,可以直接做为一个普通的类来使用,到)才可以,这时这个静态内部类,可以直接做为一个普通的类来使用,而不需要实例化一个外部类。而不需要实例化一个外部类。如调用:如调用:OuterCls(外部类外部类).InnerCls(内部类内部类)第17页5.3 进一步的应用-静态static运用(三)u 静态程序块:用静态程序块:用static标识的代码块,称为静态代码块,这些代码不存在任何方法标识的代码块,称为静态代码块,这些代码不存在任何方法内,当类被装载时,静态代码块只执行一次,类中不同的静态代码块按它们在

18、类内,当类被装载时,静态代码块只执行一次,类中不同的静态代码块按它们在类中出现的顺序被执行;中出现的顺序被执行;例:例: public class SendMessage static String name; static/在第一个类初始化实例的时候,执行一次在第一个类初始化实例的时候,执行一次 name = new String30; /只需要初始化一次,只需要初始化一次,name为全部对象共用为全部对象共用 name0=“zhang san; name1=“li si”; 实际开发中,一般会利用静态块做配置读取或数据初始化操作。实际开发中,一般会利用静态块做配置读取或数据初始化操作。u

19、静态导入:静态导入:J2SE5.0以后可以使用静态导入的方式调用静态变量或方法。以后可以使用静态导入的方式调用静态变量或方法。例:例:import static java.lang.Math.*; double value = log(100)*PI;第18页5.4 进一步的应用-final关键字u final类似于类似于C语言中定义常量的功能(初始化后值不可改变),而且,语言中定义常量的功能(初始化后值不可改变),而且,final还可以控制成员、方法或者是一个类被覆写或继承等功能,这些特点还可以控制成员、方法或者是一个类被覆写或继承等功能,这些特点使使final在在Java学习中非常重要;学

20、习中非常重要;u final变量:变量:final的变量一旦被初始化便不可改变,即基本变量的值不可变的变量一旦被初始化便不可改变,即基本变量的值不可变或对象的引用不可变;或对象的引用不可变;u final方法:方法:被指定成被指定成final的方法,不允许在子类继承的时候覆写这个方法,的方法,不允许在子类继承的时候覆写这个方法,否则编译器在编译时会直接报错否则编译器在编译时会直接报错;u final类:类:对于不需要被继承的类,可以设计成对于不需要被继承的类,可以设计成final型的,其类中的方法也型的,其类中的方法也是默认成为是默认成为final型的,成员变量可以不是型的,成员变量可以不是f

21、inal型的。使用型的。使用final能够提升一能够提升一定的性能,但同时也固化了结构,使程序不可扩展,需要根据情况使用。定的性能,但同时也固化了结构,使程序不可扩展,需要根据情况使用。第19页5.5 进一步的应用-抽象类u 当设计一个超类时,明确知道需要实现某个方法,但又不确定各子类方法当设计一个超类时,明确知道需要实现某个方法,但又不确定各子类方法实现的过程时,可以通过实现的过程时,可以通过abstract关键字,把这个方法设置成抽象方法,关键字,把这个方法设置成抽象方法,把这个类设置成抽象类;把这个类设置成抽象类;u 含有抽象方法的类必须声明成抽象类,抽象类不能通过含有抽象方法的类必须声

22、明成抽象类,抽象类不能通过new操作符直接实操作符直接实例化,但可以指定为其子类(不是抽象的),子类继承抽象类时,必须重例化,但可以指定为其子类(不是抽象的),子类继承抽象类时,必须重写父类的抽象方法写父类的抽象方法(除非子类也设计成除非子类也设计成abstract的的);例:例:abstract Class A /定义抽象类定义抽象类 abstract void callMe(); /定义抽象方法,注意,不带方法体定义抽象方法,注意,不带方法体例:例:Class B extends A void callMe() /执行方法体执行方法体 ; /注意,必须实现抽象方法注意,必须实现抽象方法第2

23、0页5.6 进一步的应用-接口u 接口是抽象类的变体,接口中所有的方法都是抽象的,类可以同时实现多接口是抽象类的变体,接口中所有的方法都是抽象的,类可以同时实现多个接口(类似多继承概念),接口中的成员变量只可以定义成个接口(类似多继承概念),接口中的成员变量只可以定义成static final的;的;定义形式:定义形式: interface name type = value; type method-name(parameter-list);u 接口的实现:类通过接口的实现:类通过implements实现接口,一个类可实现多个接口,通实现接口,一个类可实现多个接口,通过逗号分隔,实现接口的方

24、法必须声明成过逗号分隔,实现接口的方法必须声明成public,而且实现方法的类型必,而且实现方法的类型必须严格与接口定义中指定的类型相匹配;须严格与接口定义中指定的类型相匹配;定义形式:定义形式: access class className extends superCalss implements interface,interface第21页5.7 进一步的应用-接口续u 接口可以继承接口,用接口可以继承接口,用extends关键字,当一个类实现一个继承了另一个接口的关键字,当一个类实现一个继承了另一个接口的接口时,它必须实现接口继承链表中定义的所有方法;接口时,它必须实现接口继承链表中

25、定义的所有方法;接口继承形式:接口继承形式: interface 接口接口A extends 接口接口B u 接口和抽象类区别。接口和抽象类区别。抽象类中可以有不为抽象类中可以有不为abstract的方法,接口必须是。的方法,接口必须是。抽象类数据成员可以不是抽象类数据成员可以不是static final的,接口必须是。的,接口必须是。抽象类可以有抽象类可以有private的实现方法,接口所有方法默认且必须是的实现方法,接口所有方法默认且必须是public的。的。同一个类只能继承一个父类,但可以实现多个接口。同一个类只能继承一个父类,但可以实现多个接口。抽象类表现为一种完全继承的关系,在明确对象本质的时候采用抽象类来设计,而接口往往表现为一种抽象类表现为一种完全继承的关系,在明确对象本质的时候采用抽象类来设计,而接口往往表现为一种可变的或组合的抽象。前者是可变的或组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论