第四章Java面向对象程序设计3_第1页
第四章Java面向对象程序设计3_第2页
第四章Java面向对象程序设计3_第3页
第四章Java面向对象程序设计3_第4页
第四章Java面向对象程序设计3_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

4.7多态及super关键字

多态的表现形式主要有方法的重载和方法的覆盖,对象的上转型对象和接口的回调也是多态的表现形式。(1)方法重载1)构造方法的重载2)普通方法的重载1)构造方法的重载classCard{privateStringcardNumber=null;

Card(){}Card(StringcardNumber){this.cardNumber=cardNumber;}}方法重载是指同一个类中多个方法享有相同的名字,但是这些方法的参数必须不同,参数不同是指:或者是参数的个数不同,或者是参数类型不同,或者是相同类型参数的排列顺序不同。需要注意的是,方法的返回值类型不能用来区分方法的重载。

例:publicintvolume(inta,intb)publicvoidvolume(intx,inty)

例2)普通方法的重载两个方法虽然返回值类型和参数名字不同,但参数个数、类型和顺序完全相同,即具有相同的参数表。(2)方法覆盖类继承的过程中,子类方法跟父类方法名字、返回值类型及参数列表参数完全一样,称子类覆盖了父类的方法。覆盖

父类的方法通常是为了对其进行修改,并添加新的功能。子类中重写方法的访问控制权限要大于等于父类方法。当一个被覆盖方法通过父类引用被调用,Java根据当前

被引用对象的类型来决定执行哪个方法。例说明:子类不能覆盖父类中声明为final的方法。②可以通过super关键字调用父类中被覆盖的成员。子类可以继承父类的非私有成员变量和成员方法,但是,如果子类中声明的成员变量与父类的成员变量同名,那么父类的成员变量将被隐藏。如果子类中声明的成员方法与父类的成员方法同名,并且参数个数、类型和顺序也相同,那么称子类的成员方法覆盖了父类的成员方法。这时,如果想在子类中访问父类中被子类隐藏的成员方法或变量时,就可以使用super关键字-------父类对象的引用。Super关键字(1)调用父类的构造方法构造方法作用的特殊性决定了它不可以被继承。但是在设计子类的时候,我们希望在父类某个构造方法的基础上来设计子类的构造,就可以在子类构造方法的第一条语句使用super来调用父类的某个构造方法。语法如下:super([参数]);classStudent{intnumber;Stringname;Student(intnumber,Stringname){this.number=number;=name;}}classUniverStudentextendsStudent{booleansex;UniverStudent(intnumber,Stringname,booleansex){//子类的构造方法super(number,name);//调用父类的构造方法

this.sex=sex;}publicstaticvoidmain(Stringargs[]){UniverStudentzhangSan=newUniverStudent(2009020301,“张三",false);System.out.println("我是"+zhangS+“我的学号是"+zhangSan.number);}}(2)调用父类的同名成员被子类隐藏的属性和被子类覆盖的方法都可以通过super来调用。1)调用父类被覆盖的方法语法如下:super.方法名([参数]);2)调用父类被隐藏的成员变量语法如下:super.变量名例1

例24.8包包(Package)是Java提供的一种命名空间机制,实现了对

类的存放和引用位置的管理,包对应一个文件夹,包中还可

以再有子包,称为包的等级。在编写类的时候可以声明类所在的包,在同一个包中类名不

能重复,在不同的包中类名可以相同。当源程序中没有声明类所在的包时,类被存放在默认的包中,该默认包中的类要求类名唯一,不能重复,否则会产生冲突。Java的类库就是用包来实现类的分类和存放,每个包中都有

多组相关的类和接口。(1)创建包默认情况下,系统会为每个Java源程序创建一个无名包。

该Java文件定义的所有类都隶属于这个无名包,它们之间

可以相互应用非私有的变量和方法。Java提供创建包的语句是package语句。创建包的语法格式为:package<包名>;

说明:每个Java源程序文件都隶属于一个包,如果程序中无package语句,则该源程序隶属于Java的默认无名包。

如果有package语句,那么该源程序文件创建的类都放入package语句指定的包中。每个Java源程序只有一个package包,且必须是作为第一

条语句存放在程序中。程序在执行package语句时,首先检查语句中指定的包(文件夹)是否存在,如果存在则直接使用原有文件夹;如

果不存在,则建立与包名相同的文件夹。packagemypackage;publicclassCalculate{publicintadd(intx,inty){return(x+y);}}编译后生成的类将存放到已建立的包中(即mypackage文件夹中)在应用程序中还可以创建多层次的包,即一个包中又可以包含一个子包,将层次中的每个包名用圆点“.”分隔即可。一个创建包等级的格式如下:package

<包名>[.<子包名>.[<子包名>…]]子包的创建:packagemypackage.firstpackage.secondpackage;publicclassClassname{message(Strings){system.out.println(s);}}

(2)引用包

在dos环境下,Classpath指明类库在操作系统中的位置。把自定义包的路径添加到classpath中,不同的路径用“;”隔开,通过import语句方便地引用包。

java.lang包中的最基本应用时系统自动加载的,不需要

显示的用import语句导入就看可以使用其中的类。Java引入包中的类有两种途径:①直接在被使用的类前面加上完整的包名②

通过import引用包中的类①在类名前加上包名publicclassJOptionPaneDemo{publicstaticvoidmain(Stringargs[]){javax.swing.JOptionPane.showMessageDialog(null,”HelloJava”);}}②

通过import引用包中的类import语句用于为程序引入需要的类。通过import语句

引入类后,就可以在程序中直接使用类名来访问。import语句的语法格式如下:import<包名>[.<子包名1>[.<子包名2>…]].类名|接口名|*;其中import是关键字,多个包及类或接口之间用圆点“.”分隔,“*”表示包中所有类或接口。例如:importjava.awt.*;例包和访问权限一个包中只有访问权限为public的类才能被其它包引用(创建此类的对象),其它有默认访问权限的类只能在同一包中使用。在不同包中类成员的访问权限:

public类的public成员可以被其它包的代码访问;protected成员可以被由它派生的其它包中的子类访问。

默认访问权限类的成员,不能被其它包的代码访问。Java源程序结构Java的源程序文件(.java文件)中可以包含以下类型的成分:package包名//声明所在包,0-1句import包名.类名|包名.接口名//导入其它包中的类或接口,0-多句,“|”表示2者选1[public]class|interface//声明类或接口,1-多句说明:一个源程序文件中,最多只能有一条package语句,并且必须是第1条语句。一个源程序文件中,可以有多条import语句,并且必须位于其它类或接口声明之前。一个源程序文件中,可以定义多个类或接口,但只能定义一个public权限类或public权限接口,并且该类或接口名与文件名相同。4.9系统类库简介Java类库的结构类库就是JavaAPI(ApplicationProgrammingInterface,应用程序接口),是系统提供的已实现的标准类的集合。在程序设计中,合理和充分利用类库提供的类和接口,不仅可以完成字符串处理、绘图、网络应用、数学计算等多方面的工作,而且可以大大提高编程效率,使程序简练、易懂。

Java类库中的类和接口大多封装在特定的包里,每个包具有自己的功能。Object类是Java程序中所有类的直接和间接父类,也是类库中所有类的父类,包含了所有Java类的公共属性。1.java.lang包中的常用类⑴Object类(2)String类(3)Math类方法定义功能publicstaticdoublesin(doublea)求正弦值publicstaticdoublecos(doublea)求余弦值publicstaticdoubletan(doublea)求正切值publicstaticdoubleexp(doublea)返回e的a次方publicstaticdoublelog(doublea)返回a的自然对数publicstaticdoublesqrt(doublee)返回a的平方根publicstatictypemax(a,b)返回a、b中的大数publicstatictypemin(a,b)返回a、b中的小数publicstatictypeabs(a)返回a的绝对值(4)数据类型类数据类型类又称包装类,与基本数据类型(如:int,double,char,long等)密切相关,每一个基本数据类型都对应一个包装类,它的名字也与这个基本数据类型的名字相似。

例如:double对应的包装类为Double。不同的是,包装类是一个类,有自己的方法,这些方法主要用来操作和处理它所对应的基本数据类型的数据。Integer类的基本使用方法类别

方法定义

功能构造函数publicInteger(intvalue)根据一个整型数生成一个整型对象publicInteger(Strings)根据一个整型数字字符序列生成一个整型对象实例方法publicstaticintintValue()将包装类对象转换成整型数据publicstaticintparseInt(Strings)将字符串转化为整型数据publicstaticIntegervalueOf(Strings)将一个字符串转化成Integer对象publicStringtoString()返回一个表示整型值得String对象classDataTypeDemo{ publicstaticvoidmain(Stringargs[]){ Strings1="1000";Strings2=null;intbetMoney=10000;intmyMoney=0;s2=String.valueOf(betMoney);

//将整型数据转化为Srting对象myMoney=Integer.parseInt(s1);//将字符串转化为整型数据System.out.println(s2);System.out.print(myMoney);}}2.java.util包中的常用类⑴ArrayList类ArrayList对象是数据的列表,是长度可变的对象引用数组,类似于动态数组。例类别方法定义功能构造方法publicArrayList()构造一个初始容量为10的空列表publicArrayList(intsize)使用给定长度创建一个数组列表实例方法publicintsize()返回此列表中的元素个数publicEget(intindex)返回此列表中指定位置的元素,E表示类型publicintindexOf(Objectx)返回元素在列表中首次出现的位置publicbooleanadd(Eo)将指定元素加入到列表的尾部publicbooleanremove(object)从此列表中移除指定元素(2)Vector类Vector类包含在java.util包中,是可以实现可增长的对象数组。但是,Vector的大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作。例类别方法定义功能构造方法publicVector()创建一个空VectorpublicVector(i

温馨提示

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

评论

0/150

提交评论