ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:25.08KB ,
资源ID:30625894      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30625894.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java的对象类方法和接口.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java的对象类方法和接口.docx

1、Java的对象类方法和接口1.1什么叫对象?什么叫方法?什么叫面向对象的程序设计?面向过程的程序设计语言最重要的特点是按照解决问题的一个一个步骤来设计程序。这种语言是与解决相对比较简单的问题,当程序规模较大时,将显得纷繁复杂。“对象”原来是描述自然界时使用的一个词语。比如,现在我正在写讲义,桌上的稿纸、手中的笔、案头的参考书、身后的电脑以及窗外的鸟都可以成为对象面向对象,就是将世界看成由许多彼此之间能联络的对象组成。 不少程序设计语言借用了对象这个词语作为一个专用名词,此时,对象也是具有状态和行为两个特征。在程序设计中,对象的状态时相对处于静态的,用变量来描述和表达;而对象的行为时动态的,他们

2、通过“方法”来实现和完成,所以方法一定是实现对象行为的语句块。从功能上讲,方法和子程序、函数很相似。变量和方法是彼此有关、相互依赖的。当然,计算机都是用数据来表示对象的状态的,也是通过对数据的操作和修改来体现某个方法的功能的。1.2 Java作为面向对象的程序设计语言有什么特点? Java是面向对象的程序设计语言,从面向对象这个角度看,体现了如下三个特点: a:封装性面向对象的程序设计语言都是把数据和处理数据的操作结合在一起而构成一个整体,这就是对象。对象的使用者只能看到对象的外部特性,比如,其主要功能、如何调用等,而看不到内部如何实现这些功能。作为面向对象的程序设计语言,程序中的数据就是变量

3、,程序对数据作处理则成为方法。变量和方法都被封装在对象中。所以,一个对象就是变量和方法的集合,其中变量表明这个对象的状态,方法实现这个对象所具有的行为,而且在程序中将这些变量和方法进行封装,使它们成为一个模块,再用一个名字来代表这个模块。这样,以后得更高层的程序设计中,就不必关心某个对象的行为到底是怎样实现的。可见,将对象封装就是为了使模块尽可能少地展现其内部细节,而只是以一种界面来面向外部。 对象的封装性减少了程序各部分之间的依赖,使程序的复杂性降低,而可靠性提高,并便于修改。 b:继承性面向对象的程序设计中,对象是从类创建出来的,这一点即将在下面的解答中说明。在Java中,许多类组成层次化

4、结构。一个类的上一层成为父类,而下一层成为子类。一个类可以继承其父类的变量和方法,而且这种集成具有传递性。就是说,一个类可以继承其上一层和其再上一层的变量和方法。这种可传递的继承性使得下层多个相似的对象可以共享上层类的数据和程序代码,而子类又可以再继承父类的基础上增添新的内容和功能。这种代码共享和代码可增添的继承特性使Java既灵活又方便提高效率。 c:通信相关性一个对象往往涉及多个行为。体现在程序设计中,一个对象往往包含多个方法,每一个方法对应一个行为。所以,一个对象完成某个动作也就是程序执行相应的方法。于是,就涉及对象之间通过交互来实现复杂的行为,这叫对象之间的通信。 利用通信可以实现一个

5、对象往另一个对象的信息传递。信息传递设计三个要素:一是信息接收对象;二是接收对象中用哪个方法完成指定的动作;三是比方法需要的参数。由于信息传递的要素非常清晰,所以用在变成中将很方便。 这种通信相关性使得许多复杂功能得以实现,却有能避免编程的错综复杂。2.1 什么叫释放对象?Java中怎么释放对象?所谓释放对象,实质上就死后释放掉分配给对象的内存空间。Java中,对象的释放是自动完成的,不需要程序员在编程时关注这一点。Java运行系统具有所谓“垃圾收集”机制,这种机制会周期性地检测对象是否还在使用,如发现有长期不用的对象,则给予释放,回收分配给这些对象的内存,这就是垃圾收集。 具体运行中,垃圾收

6、集是由一个成为Java垃圾收集器的程序实现的。当一个对象在使用时,Java运行系统会将其对象的内存空间设置标记;而当一个对象结束使用时,会自动清除标记。有了这种标记设置和清除的规则,Java垃圾收集器就可以通过周期性地扫描所有Java对象有关的内存区域标记,将没有标记的内存区列入可供分配的范畴,从而起到垃圾收集作用。 因为垃圾收集器涉及读/写操作,相对较慢,所以,尽管扫描过程是周期性进行的,但垃圾收集操作却以较低优先级留待系统空闲周期中才得以完成。除了自动收集垃圾外,Java运行系统也允许程序员通过调用方法system.gc()请求垃圾收集。此外,Java系统开始运行时,会自动调用一个名为fi

7、nalize()的方法,此方法的功能之一也是释放对象所占的内存。3.1 类的结构和属性在Java程序中,类是基本的组成要素,所有对象都是由类创建的,新的类必须在已有类的基础上构造,这成为类的派生。大多数类都是派生得到的。派生得到的新类成为已有类的子类,而次已有类成为父类。3.2 类是怎样一种结构?什么叫类的成员变量?类的结构分为两部分,一是类的说明,二是类体。格式如下: classDeclaration classBody a:类的说明类的说明由关键字class、类的名字和类的属性三部分组成。关键字class用固定的小写格式,类的名字是由程序员起的,可以用任意一个名词,但书写格式必须符合Jav

8、a编码规定,这两部分是类的说明中必须有的内容。类的属性石可选的,用来说明此类有关的各种特性,包括说明这个类的父类是哪一个,访问这个类有什么限制等。b:类体类体是类的主题内容,它包括两部分:变量说明和方法。在前面已经讲到,在Java的类中,变量表明类的状态,方法实现类的行为,正是这两部分内容构成了类体。习惯上将类中的变量成为类的成员变量。成员变量的类型可以为Java的任意数据类型。在一个类中,成员变量的名字是唯一的,但成员变量的名字可以和方法的名字相同。所以,将刚才列出的类的格式再具体化一些,那就应该如下所示: class className member VariableDeclaration

9、s /变量说明 methodDeclarations /方法说明在比较复杂的程序中,方法往往是由许多成分构成的方法体。方法体中包含此方法要用的变量(称为局部变量),还包含多个语句构成的语句组。在类体中,通常首先列出成员变量,然后是方法,但这不是严格规定的。必须严格遵守的规则是:类的成员变量定义必须放在类体中,但又不能包含在某个方法中。3.3 类的属性包含哪三方面的内容?举例说明怎样表示这些内容?并作综合。 类的属性用来说明三方面的内容,即:a.指出此类的父类(extends部分) - 大多数类都是从父类派生得到的,父类也被称为超类(SuperClass)。在类的属性中,用关键字extends和

10、父类名构成一个语素来说明这一点。这个语素一般放在类名字和类体之间,即采用如下格式:extends SuperClass 比如:class ImaginaryNumber extends Number.有许多类是从Java系统提供的软件包java.lang中的Object类派生来的,这样派生的类一般不再在属性中指出父类的名字。我们一般称这些类的父类为隐含的,实际上,其父类就是Object。Object是Java中最原始的类。可见,extends部分是可选的;b指出此类提供的借口(implements部分) - 接口是和类很相似的一种数据结构,接口专门供给类调用。如果一个类要调用。这里,我们要说明

11、的是,如果一个类要调用接口,格式如下:implements InterfaceList其中,implements是专门用来调用接口的关键字,而InterfaceList是接口的名字。比如,有一个名为Collection的接口被雷ImaginaryNumber调用,那么,类ImaginaryNumber的属性中就可以看到有Implements部分:class ImaginaryNumber extends Number Implements Collection.通常,Implements部分放在extends部分后面,但Implements部分也是可选的,并非每个类的属性中都有这部分内容;c指

12、出类的特性(修饰部分) - 大多数类都可以再派生出子类,但是出于安全性的考虑,Java规定有些类不能再派生出子类。这样,就有了一种特别的类叫最终类。在类的属性中用关键字final来说明这种属性。Final放在类属性的前面。比如final class ImaginaryNumber extends Number Implements Collection.在这个类定义中,前面用final指出类ImaginaryNumber是一个最终类。还有一些类不能创造出对象来,它们仅仅是为了让子类来继承而设计的,这些类称为抽象类。这也是一种特殊的类,在类的属性中用关键字abstract来说明这种特性。Abst

13、ract也要放在属性的前面。比如:abstract class ImaginaryNumber extends Number Implements Collection.可以想到,抽象类不可能是最终类;反过来,最终类也不可能是抽象类,它们的特性正好相反,所以,abstract不会和final同时出现。我们已经知道,由类创建出对象,而多个类组成包,同一个包中的类可以互相访问。但是有一种类,它们不但可以被同一个包中的类访问,还可以被包以外的其它类或对象访问,这些类被称为公共类。在类说明中用public来说明公告类特性,public放在类属性的最前面。与public相对应,还有一些类只能被同一个包中

14、的其它类访问,这种类用private来说明特性。实际上,public和private表明了类的一种访问权限。综上所述,一个类的说明应该是按如下形式:【modifiers】class ClassName【extends SuperClassName】【Implements InterfaceList】.(方括号可选) 在这些成分中,只有关键字class和类名字是必须得,其它均为可选成分。如果没有某个可选成分,在编译时,Java编译器将赋予此类以相应的默认成分。比如:非公共类、非专用类、非最终类、非抽象类,不调用任何接口,父类为Object等。4.1 类的成员变量定义时包含哪几部分内容? 类的成员

15、变量必须放在类体中,但不能包含在某一个方法体内,最简单的成员变量表示如下:type variableName(变量类型 变量名) 实际编程中,类的成员变量在定义时往往还包含它的属性,属性指下列三方面内容:a变量的访问权限:表示满足什么条件此变量可以被访问。访问权限用关键字public private protected 活private protected。 b是否为静态变量:如为静态变量,则将被从此类创建的所有对象共享。就是说,可以有许多对象对一个静态变量进行不同操作。静态变量用关键字static表示。 c是否为常量:Java往往将常量也统称为变量,常量在程序中试不能被改变的,如果企图改变,

16、则编译时会产生出错误指示。如果一个变量其实是常量,则用final表示。 综合起来成员变量表示如下:【variableModifier】 type variableName。5.1 方法是怎样一种结构? 在形式上,方法的结构和类的结构相似。方法也有两部分组成,一时方法说明,二是方法体。其格式如下所示:methodDeclaration methodBodya-方法说明:方法说明(methodDeclaration)指出方法类型、方法名、访问权限和入口参数。 所谓方法类型,其实是指此方法执行以后得返回值类型。返回值可以使Java允许的任何一种数据类型,包括简单类型和数组这样的复杂类型。如果某个方法

17、没有返回值,则称此方法的返回值void类型。 方法名可以使符合Java编码规定的任何标识符。 方法的访问权限从含义上和类的成员变量的访问权限类似。访问权限规定了此方法可以被什么样的对象调用。 方法的入口参数是由调用这个方法的对象提供的。但是,一个方法的入口参数个数和类型都在方法说明中做了规定,方法被调用时,必须符合这些规定。正是因为每个方法常常有不同的入口参数个数和类型,所以,Java允许具有不同入口参数类型或个数的几个方法用同一个名字。由于入口参数不同,编译器因此能区分它们。 b方法体:方法体是完成方法功能的语句块,通常将这语句块用大括号括起来。其实,细分起来,方法体内部从形式上也可以分为两

18、部分:一部分是变量,另一部分是语句。方法体内部定义的变量只供本方法使用,成为局部变量。 综上所述,一个方法的具体节后应如下所示:【modifiers】 type methodName(para1,para2,.)methodBody5.2 this 和super在方法中有什么特殊作用?它们用在什么情况下? this 和super是Java的两个关键字,它们用在方法体中作为两个特殊的变量前缀和方法前缀。This 用来指明当前对象的成员变量或方法,以区分于同名的局部变量和其他同名的方法,而super则用于指出父类的变量和方法。 this的使用场合-一个对象中的方法一般可以直接访问通一个对象的成员变

19、量。但是,有时候方法体内部定义的变量和成员变量名字相同,还有时方法的入口参数和对象的成员变量名字相同,那么就需要将第三者区别清楚。因此,专门用this来指明当前 对象的成员变量或当前对象的方法。比如: class ThreeColor int h,s,b; ThreeColor(int h,int s,int b) this.h=h;/*其中,右边的h为方法的入口参数,this.h为成员变量,这个语句使方法的入口参数值赋于成员变量。*/ Super的使用场合在Java中,由父类派生子类,这样,子类的成员变量可能和父类的成员变量名字相同,子类的方法也可能和父类的方法一样。当需要调用父类的同名方法

20、或使用父类的同名变量时,在子类中,可用关键字super作前缀来指明父类成员变量和方法。比如: class SuperCa int x; SuperCa() X=5; System.out.println(“SuperCa x=”+x); Void doCa() System.out.println(“SuperCa.doCa()”); Calss SubCa extends SuperCa Int x; SubCa() super(); x=8; System.out.println(“SubCa x=”+x); Void doCa() super.doCa(); System.out.pri

21、ntln(“in subCa.doCa()”); System.out.println(“super.x=”+super.x); 上述例子中,在两种情况下用了super。一是子类调用父类的构造方法,用了super()语句;二是子类SubCa调用父类的方法doCa()时,用了super.doCa()语句。6.1 两个特殊的构造方法(构造方法和main(),构造方法的功能是什么?有什么特性? 在每个类中,都有一种特殊的方法,成为构造方法,构造方法的功能是对从这个类新创建的对象分配内存空间和进行初始化。每次创建对象时,系统便自动调用相应类的构造方法。构造方法的特殊之处还在于它不能独立的方法名字,而且

22、只能有入口参数,而没有返回值。但实际上,构造方法仍然是有名字的,构造方法的名字叫init,这是由编译器隐含提供的,但此名不允许程序员使用。所以,通常总是将类的名字作为构造方法的名字。 当从一个类创建某个对象时,要用关键字new来建立对象,即为新建的对象分配内存。New语句的功能实际上就是调用类中的一个构造方法。 其实,在一个类中常常有多个构造方法,通过不同的入口参数互相区分。这多个构造方法往往可以创建多个不同的对象。这些构造方法中,一般有一个构造方法是不带入口参数的,它称为默认的构造方法。比如:public Rectangle();/默认的构造方法public Rectangle(int va

23、lue,int value);/带两个整型入口参数的构造方法public Rectangle(int value,int value,int value)/带三个整型入口参数的构造方法6.2 main方法由什么特点? Main方法也是一个特殊的方法。在Java的每个应用程序(Application)中,都必须有main方法。也正是main方法的有无,区分了能独立运行的应用程序和不能独立运行的Applet程序。Applet中一定没有main方法,而应用程序中一定包含main方法。Java解释器运行字节码文件时,首先寻找mian方法,然后一次为程序的入口点开始运行。如果一个应用程序不含main方法

24、,那么,Java解释器会拒绝解释和执行这个程序。而Applet中由于没有main方法,所以只能用带Java功能的浏览器或另一个成为Java观察器的appletviewer来运行。 实际上,在main方法中,可以有许多语句,通过语句可以创建对象,也可以调用其他对象中的方法。当main方法结束时,程序也运行结束。Main方法的结束可以是语句块的结束,这是常用的办法,但也可以采用System.exit语句调用系统类的exit方法退出。 在Java程序中,一般只含有一个main方法。如果一个程序含有多个main方法,那么,解释器执行程序时,只有程序最前面的第一个类所包含的main方法作为程序运行的入口

25、点,其余类中的main方法就仅仅作为一般的方法,因而这些main方法失去了其特殊性。为了程序的可读性好,我们提倡一个程序中只用一个main方法。 main方法的参数和其他方法的参数也不同。main方法没有返回参数,而它的入口参数就是应用程序运行时在命令行给出的参数。7.1 什么叫多重继承?Java不采用类的多重继承而用单一继承机制有什么优点? Java不带用C+语言中的多重继承机制,这位编程带来方便。多重继承是指一个雷可以使多个父类的子类,这使类的层次关系变得很复杂;而且,如果几个父类含有相同的成员变量或相同的方法,那就回给子类的变量和方法的继承及调用带来混乱,Java采用单一继承机制,就能很

26、清楚地表明类的层次关系,从而避免了混乱。7.2 什么叫变量隐藏?什么叫方法置换?举例说明方法置换的原理? 在子类对父类的继承中,如果子类的成员变量和父类的成员变量同名,此时成为子类隐藏(override)了父类的成员变量。这种情况下,子类使用的变量是它自己的变量,而不是父类的同名变量。于是,父类的成员变量不能被子类简单继承,如果子类要调用父类的变量,则必须借助super关键字。还有一种情况是子类的方法名和父类的方法名相同,并且返回值的类型和入口参数的数目、类型均相同,那么在子类中,从父类继承的方法就会被置换掉。比如: class Bird protected int x; protected

27、int y; protected Brid(int x,int y) /Peace的构造方法 this.x=x; this.y=y; public void draw(). class Peace extends Bird private int w; private int h; public Peace (int x,int y,int w,int h) super(x,y); this.w=w; this.h=h; public void draw() /peace类的draw()方法 System.out.println(“Peace:”+x+”,”+y+”,”+w+”,”+h); C

28、lass Sparrow extends Bird private int r; public Sparrow(int x,int y,int r)/Sparrow的构造方法 super(x,y); this.r=r; public void draw() /Sparrow类的draw()方法 System.out.println(“Saprrow:”+x+”,”+y+”,”+r); public class draw() public static void main(String args) Bird S1=new Peace(1,2,100,200);/创建对象S1 Bird S2=ne

29、w Sparrow(10,20,100);/创建对象S2 S1.draw(); /调用Peace的draw()方法 S2.draw(); /调用Sparrow的draw()方法 从上述例子中,从类Bird派生出两个子类Peace和Sparrow。这三个类中,都包含一个名为draw()的方法,而且这三个方法的入口参数要求均相同,返回值要求也想透。在34行开始的必然的BirdProgram程序中,有一个main方法,36和37行的语句则分别定义了两个对象S1和S2,它们分别是从类Peace和雷Sparrow创建的。所以,S1.draw()语句对象S1调用了类Peace中的draw()方法,而S2.

30、draw()语句使对象S2能够调用类Sparrow中的draw()方法,这楼里,调用的都不是父类中同名的draw()方法,由此体现出父类被子类继承后,它的方法被子类的同名方法只换了。 只有子类和父类有同名、同返回值和同入口参数的方法时,才存在子类对父类的方法置换关系。但有时程序设计中仍然想使用父类中的那个有置换者的方法,此时,可借助关键字super来实现。7.3 什么是抽象类?什么是抽象方法?它们有什么特点和用处? 抽象类是一种特殊的类。从这种类不能创建对象,而只能由其派生子类所以,抽象类是专门用来作为其他类的父类的。 在抽象类中优势还包含抽象方法。所谓抽象方法,是指只给出定义,但不包含实现语

31、句的方法。这种抽象方法的实现必须由子类来完成。 比如在java.lang包中,有一个名为Number的类,它是一个代表程序中所有数字的抽象类。如果由此来创建某个数字对象,那将没有什么现实意义。但是,它可以作为Array类、Int类等代表具体的特定的数据类的父类。 抽象类的定义格式中包含关键字abstract。比如abstract class Birdint i=1; 在抽象方法的定义中也用关键字abstract,但是abstract在方法中使用时由如下限制:1构造方法不能冠以abstract; 2凡是定义为static或private型的方法不能再加abstract; 3如果父类中已有同名的abstract方法,那么,子类中就不能再由同名的抽象方法。另外,还有一点要指出,抽象类中不一定有抽象方法,但包含抽象方法的类必须为抽象类。8.1 Java的接口有什么特点?引入接口的定义带来什么优点? Java中,接口是和类相似的一种机制。不过,从结构上,接口有如下特点:1 接口中关键字interface来定义,而不是用class;2 接口中定义的变量全是最终的静态变量;3 接口中没有自身的构造方法,而且定义的其它方法全是时抽象方法,即只提供方法的定义,而没有提供方法的实现语句。4 接口采用多重继承机制,而不是采用类的单

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1