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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

java的特征及多态.docx

1、java的特征及多态312 面向对象的基本特征1封装性封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义: 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界或者说形成一道屏障,只保留有限的对外接口使之与外部发生联系。封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的交叉感染,使软件错误能够局部化,大大减少查错和排错的难度。2继承性特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。例如,轮

2、船、客轮;人、大人。一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务,这称为多继承。例如,客轮是轮船和客运工具的特殊类。在java语言中,通常我们称一般类为父类(superclass,超类),特殊类为子类(subclass)。3多态性对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。例如:几何图形的绘图方法,椭圆和多边形都是几何图的子类,其绘图方法功能不同。313 面向对象程序设计方法 OOAObject Oriented Analysis 面向对象的分析OODOb

3、ject Oriented Design 面向对象的设计OOIObject Oriented Implementation 面向对象的实现32 Java语言的面向对象特性321 类类是java中的一种重要的复合数据类型,是组成java程序的基本要素。它封装了一类对象的状态和方法,是这一类对象的原形。一个类的实现包括两个部分:类声明和类体。1类声明:publicabstract|final class className extends superclassName implements interfaceNameList其中,修饰符public,abstract,final 说明了类的属性,c

4、lassName为类名,superclassName为类的父类的名字,interfaceNameList为类所实现的接口列表。2类体类体定义如下:class classNamepublic | protected | private static final transient volatile typevariableName;/成员变量public | protected | private staticfinal | abstract native synchronizedreturnType methodName(paramList) throws exceptionListstate

5、ments /成员方法3成员变量成员变量的声明方式如下:public | protected | private static final transient volatile typevariableName; /成员变量其中,static: 静态变量(类变量);相对于实例变量final: 常量transient: 暂时性变量,用于对象存档volatile: 贡献变量,用于并发线程的共享4成员方法方法的实现包括两部分内容:方法声明和方法体。public | protected | private staticfinal| abstract native synchronizedreturnT

6、ype methodName(paramList)throws exceptionList /方法声明statements /方法体方法声明中的限定词的含义:static: 类方法,可通过类名直接调用abstract: 抽象方法,没有方法体final: 方法不能被重写native: 集成其它语言的代码synchronized: 控制多个并发线程的访问 方法声明方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是复合数据类型(又称引用数据类型)。对于简单数据类型来说,java实现的是值传递,方法接收参数的值,但不能改变这些参数的值。如果要改变参数的值,则用引用数据类

7、型,因为引用数据类型传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。例3-1说明了简单数据类型与引用数据的区别。【例3-1】import java.io.*;public class PassTestfloat ptValue;public static void main(String args) int val;PassTest pt=new PassTest();val=11;System.out.println(Original Int Value is:+val); pt.changeInt(val); /值参数System.out.println(Int Va

8、lue after Change is: +val); /*值参数 值的修改,没有影响值参数的值*/pt.ptValue=101f;System.out.println(Original ptValue is:+pt.ptValue);pt.changeObjValue(pt); /引用类型的参数System.out.println(ptValue after Change is:+pt.ptValue);/* 引用参数值的修改,改变了引用参数的值*/ public void changeInt(int value)value=55; /在方法内部对值参数进行了修改public void ch

9、angeObjValue(PassTest ref)ref.ptValue=99f; /在方法内部对引用参数进行了修改运行结果 c:java PassTestOriginal Int Value is : 11Int Value after Change is: 11Original ptValue is: 101.0ptValue after Change is : 99.0 方法体方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。例3-2 说明了局部变量z和类成员变量z的作用

10、域是不同的。【例3-2】import java.io.*;class Variableint x=0,y=0,z=0; /类的成员变量void init(int x,int y) this.x=x; this.y=y; int z=5; /局部变量System.out.println(* in init*);System.out.println(x=+x+ y=+y+ z=+z); public class VariableTestpublic static void main(String args)Variable v=new Variable();System.out.println(*

11、before init*);System.out.println(x=+v.x+ y=+ v.y+ z=+v.z);v.init(20,30);System.out.println(*after init*);System.out.println(x=+v.x+ y=+ v.y+ z=+v.z);运行结果 c:java VariableTest*before init*x=0 y=0 z=0* in init *x=20 y=30 z=5*after init*x=20 y=30 z=0 上例中我们用到了this,这是因为init()方法的参数名与类的成员变量x,y的名字相同,而参数名会隐藏成

12、员变量,所以在方法中,为了区别参数和类的成员变量,我们必须使用this。this-用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或者完全相同,或是其子类。当返回类型是接口时,返回值必须实现该接口。5方法重载方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。【例3-3】import java.io.*;class MethodOverloadingvoid receive(int i) System.

13、out.println(Receive one int data);System.out.println(i=+i);void receive(int x, int y) System.out.println(Receive two int datas);System.out.println(x=+x+ y=+y);public class MethodOverloadingTestpublic static void main(String args) MethodOverloading mo=new MethodOverloading();mo.receive(1);mo.receive(

14、2,3);运行结果(编译器会根据参数的个数和类型来决定当前所使用的方法) c:java MethodOverloadingTestReceive one int datai=1Receive two int datasx=2 y=3 6 构造方法 构造方法是一个特殊的方法。Java 中的每个类都有构造方法,用来初始化该类的一个对象。 构造方法具有和类名相同的名称,而且不返回任何数据类型。 重载经常用于构造方法。 构造方法只能由new运算符调用【例3-4】class Pointint x,y;Point()x=0; y=0;Point(int x, int y)this.x=x; this.y=

15、y;322 对象类实例化可生成对象,对象通过消息传递来进行交互。消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为。一个对象的生命周期包括三个阶段:生成、使用和消除。1. 对象的生成对象的生成包括声明、实例化和初始化。格式为:type objectName=new type(paramlist); 声明:type objectName 声明并不为对象分配内存空间,而只是分配一个引用空间;对象的引用类似于指针,是32位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。 实例化

16、:运算符new为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间。 生成:执行构造方法,进行初始化;根据参数不同调用相应的构造方法。2. 对象的使用通过运算符.可以实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。调用对象的变量格式:objectReference.variableobjectReference是一个已生成的对象,也可以是能生成对象的表达式例:p.x= 10;tx=new Point( ).x;调用对象的方法格式:objectReference.methodName(paramlist);例如:p.mo

17、ve(30,20);new Point( ).move(30,20);3. 对象的清除当不存在对一个对象的引用时,该对象成为一个无用对象。Java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。System.gc( );当系统内存用尽或调用System.gc( )要求垃圾回收时,垃圾回收线程与系统同步运行。323 面向对象特性java语言中有三个典型的面向对象的特性:封装性、继承性和多态性,下面将详细阐述。1 封装性java语言中,对象就是对一组变量和相关方法的封装,其中变量表明了对象的状态,方法表明了对象具有的行为。通过对象的封装,实现了模块化和信息隐藏。通过对

18、类的成员施以一定的访问权限,实现了类中成员的信息隐藏。 类体定义的一般格式:class className public | protected | private static final transient volatile typevariableName; /成员变量public | protected | private staticfinal | abstract native synchronizedreturnType methodName(paramList)throws exceptionListstatements /成员方法 java类中的限定词java语言中有四种不同

19、的限定词,提供了四种不同的访问权限。1) private 类中限定为private的成员,只能被这个类本身访问。如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。2) default类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。3) protected类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。4) public类中限定为public的成员,可以被所有的类访问。表3-1列出了这些限定词的作用范围。【表3-1】java中类的限

20、定词的作用范围比较 同一个类 同一个包 不同包的子类 不同包非子类 private * default * * protected * * * public * * * * 2 继承性通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。 创建子类格式:class SubClass extends SuperClass 成员变量的隐藏

21、和方法的重写子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。例如:class SuperClassint x; void setX( ) x=0; class SubClass extends SuperClassint x; /隐藏了父类的变量xvoid setX( ) /重写了父类的方法 setX()x=5; .注意:子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。 superjava中通过super来实现对父类成员的访问,super用来引用当前对象的父类。Super 的使用有三种情况:1)访问父

22、类被隐藏的成员变量,如:super.variable; 2)调用父类中被重写的方法,如:super.Method(paramlist);3)调用父类的构造函数,如:super(paramlist);【例3-5】import java.io.*;class SuperClassint x;SuperClass( ) x=3;System.out.println(in SuperClass : x= +x);void doSomething( ) System.out.println(in SuperClass.doSomething();class SubClass extends SuperC

23、lass int x;SubClass( ) super( ); /调用父类的构造方法x=5;/super( ) 要放在方法中的第一句System.out.println(in SubClass :x=+x);void doSomething( ) super.doSomething( ); /调用父类的方法System.out.println(in SubClass.doSomething();System.out.println(super.x=+super.x+ sub.x=+x);public class Inheritance public static void main(Stri

24、ng args) SubClass subC=new SubClass();subC.doSomething();运行结果c: java Inheritancein SuperClass: x=3in SubClass: x=5in SuperClass.doSomething()in SubClass.doSomething()super.x=3 sub.x=5 3 多态性在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。1) 编译时多态在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法

25、。2) 运行时多态由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。 重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。在例3-6中,父类对象a引用的是子类的实例,所以,java运行时调用子类B的callme方法。【例3-6】import java.io.*;class Avoid callme( )

26、System.out.println(Inside As callme()method); class B extends Avoid callme( ) System.out.println(Inside Bs callme() Method); public class Dispatchpublic static void main(String args) A a=new B();a.callme( );运行结果c: java DispatchInside Bs callme() method 方法重写时应遵循的原则:1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。2)改写后的方法不能比重写的方法产生更多的例外。4 其它 final 关键字final 关键字可以修饰类、类的成员变量和成员方法,但final 的作用不同。1) final 修饰成员变量:final修饰变量,则成为常量,例如final type variableName;修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求。2) final 修饰成员方法:final修饰方法,则该方法不能被子类重写

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

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