《(精品)第3章 抽象、封装与类.ppt》由会员分享,可在线阅读,更多相关《(精品)第3章 抽象、封装与类.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 抽象、封装与类李莉1.面向对象思想2.面向对象的优点3.抽象与封装4.Java的类5.定义和使用类6.域7.方法 1.面向对象思想面向机器的程序:最早的计算机程序,为特定的硬件系统专门设计的。其运行速度和效率都很高,但是可读性和可移植性很差,随着软件开发规模的扩大,面向机器的程序逐渐被以C为代表的面向过程的程序所取代。面向过程的程序:模拟问题的解决过程。数据结构、算法是面向过程问题求解的核心组成。面向过程的问题求解可以精确、完备地描述具体的求解过程,但却不足以把一个包含了多个相互关联的过程的复杂系统表述清楚。面向对象的程序:模拟描述系统本身,包括系统的组成、系统的各种可能状态、系统中可
2、能产生的各种过程与过程引起的系统状态切换。关心所有这些过程的整体,不仅仅是孤立的单个过程。面向对象的程序设计语言的出发点:直接描述问题域中客观存在的事物(即对象)以及它们之间的关系。1.面向对象思想面向对象的程序设计语言对现实世界的直接模拟体现在:客观世界是由一些具体的事物构成的,每个事物都具有自己的一组静态特征(属性)和一组动态特征(行为)。例如,一辆汽车有颜色、型号、马力、生产厂家等静态特征,又具有行驶、转弯、停车等动态特征。面向对象的程序设计语言把客观世界的这一事实映射到计算机语言中,把客观世界中的事物抽象成对象(Object),用一组数据描述该对象的静态特征(属性,称为数据成员),用一
3、组方法来刻画该对象的动态特征(行为)。现实生活中的实体计算机中的对象的原型aCar color_number=red;door_number=2;int speed=200;void brake()void speedUp();void slowDown()1.面向对象思想客观世界中的事物既具有特殊性又具有共同性,人类在认识客观世界过程中通常根据事物的共同性把相似的事物归结为某些类。例如所有的汽车和某一辆汽车之间的关系就很容易理解这一点。OOPL用类(Class)来表示一组具有相同属性和方法的对象。class Car int color_number;int door_number;int s
4、peed;void brake()void speedUp();void slowDown()现实生活中的对象1 现实生活中的对象2aCar color_number=red;door_number=2;int speed=200;void brake()void speedUp();void slowDown()bCar color_number=blue;door_number=2;int speed=300;void brake()void speedUp();void slowDown()抽象实例化对象:小王静态特征:小王女讲师890.00动态特征:授课评职称调工资属性值执行的操作方法
5、名属性类:教师属性:姓名性别职称工资服务:授课评职称调工资1.面向对象思想在同一类事物中,每个事物既具有同类的共同性,又具有自己的特殊性。OOPL用父类与子类来描述这一事实:在父类中描述事物的共性,通过父类派生(Derive)子类的机制来体现事物的个性。考虑同类事物中每个事物的特殊性时,可由这个父类派生子类,子类可以继承(Inheritance)父类的共同性又具有自己的特殊性。1.面向对象思想轿车卡车吊车车载客人数,后备箱容量载重量class Truck extends Car int load;1.面向对象思想客观世界中的事物是一个独立的整体,它的许多内部实现细节是外部不关心的。例如,对于一
6、个只负责开车的驾驶员来说,他可能根本不知道他所驾驶的这辆汽车内部用了多少根螺钉或几米导线,以及它们是怎样组装的。OOPL用封装(Encapsulation)机制把对象的属性和方法结合为一个整体,屏蔽了对象的内部细节。classCarintcolor_number;intdoor_number;intspeed;voidbrake()voidspeedUp();voidslowDown()classCarintcolor_number;intdoor_number;intspeed;voidbrake()voidspeedUp();voidslowDown()this.speed-;public
7、ClassUseCarpublicstaticvoidmain(StringArgs)Carobj=newCar();obj.slowDown();1.面向对象思想客观世界中的一个事物可能与其他事物之间存在某种行为上的联系。例如,一辆行驶中的汽车当看到红色信号灯时要刹车停止,OOPL便通过消息连接来表示对象之间的这种动态联系。classCarintcolor_number;intdoor_number;intspeed;voidbrake()voidspeedUp();voidslowDown()classLightbooleanisRed=true;booleanisGreen;boolea
8、nisYellow;voidchangeLight()classTestpublicstaticvoidmain()CaraCar=;LightaLight=;aLight.changeLight();if(aLight.isRed)aCar.brake();1.面向对象思想客观世界中较为复杂的事物往往是由其他一些比较简单的事物构成的,例如,一辆自行车是由车架、车轮、把手等构成的,OOPL也提供了描述这种组成关系的功能。综上,面向对象的编程语言使程序能够比较直接地反映客观世界的本来面目,并且使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。1.面向对象思想2.面向对象的优点
9、3.抽象与封装4.Java的类5.在Java中定义和使用类6.域7.方法3.抽象与封装Java是面向对象的语言,类是面向对象技术的关键。在Java中,除了前面讲到的基本数据类型外,还有一种由用户定义并实现的复合数据类型类。在Java中,一切都是对象,任何事物都是对象。不同的对象常常只有一些共性,比如汽车、火车、飞机都有速度属性以及启动、加速、减速、停止等行为,把这些共性抽象出来就是类;类对这些属性和行为进行封装,就成为类的属性和方法。将一个抽象的类具体化,也就是类的实例化,即生成该类的一个对象。比如将汽车具体为某一辆具体型号的汽车。3.抽象与封装抽象:是一种研究方法,即去除掉研究对象中与主旨无
10、关的次要部分,或是暂时不予考虑的部分,仅仅抽取出与研究工作有关的实质性的内容加以考察。3.抽象与封装软件开发方法中的抽象有两类:过程抽象和数据抽象。l过程抽象:将整个系统的功能划分为若干部分,强调功能完成的过程和步骤。面向过程的软件开发方法采用这种抽象方法。使用过程抽象有利于控制、降低整个程序的复杂度,但是这种方法本身自由度较大,难于规范化和标准化,操作起来有一定难度,在质量上不易保证。l数据抽象:把系统中需要处理的数据和这些数据上的操作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,也包含了针对这些数据的操作,是更为严格、也更为合理的抽象方法。面
11、向对象的软件开发方法采用了数据抽象的方法来构建程序的类、对象和方法。3.抽象与封装例如:处理有关银行日常业务的问题,最核心的问题就是所有的资金、账目往来。根据与此核心问题有关的操作,可以建立一个表示账户的抽象数据类型,作为考察的重点。如果处理银行人力资源的问题,则系统最核心的问题是银行职员的信息,如工号、职位、入职时间,以及职员的出勤、招聘解聘、升职降职、请销假等事件,而不是银行的经营业务(如开户、转账、中间业务等),这时建立的则是表示职员的抽象数据类型。3.抽象与封装封装:利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其他部分只有通过包裹在数据外面的
12、操作,才能够与这个抽象数据类型交互。例如:一个工程师要组装一台电脑,他将各种电脑设备组装起来。如果需要声卡时,不需要用原始的集成电路芯片和材料自己去做,而是去电脑公司买一个符合某种规格的声卡。工程师所关心的是声卡的功能,并不关心声卡内部的工作原理,因为声卡是由电子厂商所提供,是自成一体的。这就是封装性无需知道封装单元内部是如何工作的。声卡的所有属性都封装在声卡中,不会扩展到声卡之外,用户无需知道其工作原理就可以使用。3.抽象与封装在面向对象语言中,抽象数据类型即是“类”,每个类里都封装了相关的数据和操作。例如,在银行日常业务系统中,建立了“账户”类把账户金额和交易情况封装在类的内部。这样有两个
13、好处:n安全性:系统的其他部分不能直接获取或改变这些数据,只有通过调用类内的方法才能做到,保证数据的安全。如调用查看余额的方法来获知账户的金额,调用存取款的方法来改变金额。n可重用性:封装使得类成为功能明确、接口单一、可在各种合适的环境下都能独立工作的有机整体,可以直接或间接地用于其它的应用系统,缩短开发周期和降低各种费用。例如,在“银行日常业务系统”中使用的“账户”类,可以应用在业务性质相似的保险公司投保理赔管理系统或者证券公司的证券交易系统中。1.面向对象思想2.面向对象的优点3.抽象与封装4.Java的类5.在Java中定义和使用类6.域7.方法 4.Java的类Java程序设计就是定义
14、类的过程。Java中的类有两种:n系统自带的类系统定义好的类,即Java类库中的类,用户可以直接使用。n用户自定义的类用户针对具体问题来定义的类,也就是Java程序设计的过程。4.Java的类系统定义的类:即Java类库中的类。lJava类库:类库是Java语言的重要组成部分,是一组由其他开发人员或软件供应商编写好的Java类,每个类通常对应一种特定的基本功能和任务。用户在编写自己的Java程序时如果需要完成某一功能,可以直接利用这些现成的类库,不需要从头编写。lJava的类库大部分是由SUN公司提供的。以下简单介绍JDK1.5的类库。l根据实现功能的不同,系统定义好的类可以划分成不同的集合。
15、每个集合是一个包,合称为类库。Java的类库是系统提供的已实现的标准类的集合,可以帮助用户方便、快捷地开发Java程序。4.Java的类(1)java.lang包java.lang包是Java语言的核心类库,包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系统都会自动地引入java.lang包,所以这个包的加载是缺省的。(2)java.io包java.io包是Java语言的标准输入/输出类库,包含了实现Java程序与操作系统、用户界面以及其他Java程序做数据交换所使用的类,如基本输入/输出流、文件输入/输出流、过滤
16、输入/输出流、管道输入/输出流、随机输入/输出流等。凡是需要完成与操作系统有关的较底层的输入输出操作的Java程序,都要用到java.io包。(3)java.util包java.util包包括了Java语言中的一些低级的实用工具,如处理时间的Date类,处理变长数组的Vector类,实现栈和杂凑表的Stack类和HashTable类等,使用它们开发者可以更方便快捷地编程。4.Java的类(4)java.awt包java.awt包是Java语言用来构建图形用户界面(GUI)的类库,它包括了许多界面元素和资源,主要在三个方面提供界面设计支持:低级绘图操作,如Graphics类等;图形界面组件和布局
17、管理,如Checkbox类、Container类、LayoutManager接口等;以及界面用户交互控制和事件响应,如Event类。利用java.awt包,开发人员可以很方便地编写出美观、方便、标准化的应用程序界面。(5)java.awt.event包java.awt.event包使得程序可以用不同的方式来处理不同类型的事件,使每个图形界面的元素本身可以拥有处理它上面事件的能力。(6)java.applet包java.applet包是用来实现运行于浏览器中的Java Applet的工具类库,它包含几个接口和一个重要的类:java.applet.Applet。4.Java的类(7)包包:实现网络
18、功能。如实现套接字通信的Socket类、ServerSocket类;编写用户自己的Telnet、FTP、邮件服务等实现网上通信的类;用于访问Internet上资源和进行CGI网关调用的类,如URL等。利用包中的类,开发者可以编写自己的具有网络功能的程序。(8)java.sql包java.sql包:实现JDBC,使Java程序能够访问不同种类的数据库,如Oracle,Sybase,DB2,SQLServer等。只要安装了合适的驱动程序,同一个Java程序不需修改就可以存取、修改这些不同的数据库中的数据。JDBC的这种功能,再加上Java程序本身具有的平台无关性,大大拓宽了Java程序的应用范围,
19、尤其是商业应用的适用领域。4.Java的类(9)java.rmi包来实现RMI功能。利用RMI功能,用户程序可以在远程计算机(服务器)上创建对象,并在本地计算机(客户机)上使用这个对象。(10)java.security包对Java程序加密,提供更完善的Java程序安全性控制和管理。4.Java的类使用类库中系统定义的类:n继承系统类:在用户程序里创建系统类的子类,例如每个Java Applet的主类都是java.applet包中的Applet类的子类。n创建系统类的对象:例如在图形界面程序中要接受用户的输入,可以创建一个系统类TextField类的对象来进行。n直接使用系统类:例如向系统标准
20、输出输出字符串时使用的方法System.out.println()就是系统类System的静态属性out的方法。importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassAppletInOutextendsAppletimplementsActionListenerLabelprompt;TextFieldinput,output;publicvoidinit()prompt=newLabel(请输入您的名字:);input=newTextField(6);output=newTextField(20);add
21、(prompt);add(input);add(output);input.addActionListener(this);publicvoidactionPerformed(ActionEvente)output.setText(input.getText()+,欢迎你!);继承系统类继承系统类创建系统的类对象创建系统的类对象导入系统类导入系统类4.Java的类使用系统类的前提条件:该系统类是用户程序可见的类。为此用户程序需要用import语句引入它所用到的系统类或系统类所在的包。例如:分别引入java.awt包和java.awt.event包的所有类。类库中的程序都是字节码形式的类,利用i
22、mport语句将一个包引入到程序里,相当于在编译过程中将该包中所有系统类的字节码加入到用户的Java程序中,这样用户程序就可以使用这些系统类及其中的各种功能。importjava.awt.*;importjava.awt.event.*;1.面向对象思想2.面向对象的优点3.抽象与封装4.Java的类5.在Java中定义和使用类6.域7.方法5.在Java中定义和使用类系统定义的类实现了许多常见的功能,但是在程序设计过程中,程序员仍然需要针对特定问题的特定逻辑来定义自己的类。用户程序定义自己的类有定义类头和定义类体两个步骤,其中类体又由属性(域)和方法组成。publicclassPhoneCa
23、rdlongcardNumber;privateintpassword;doublebalance;StringconnectNumber;booleanconnected;booleanperformConnection(longcn,intpw)if(cn=cardNumber&pw=password)connected=true;returntrue;elseconnected=false;returnfalse;doublegetBalance()if(connected)returnbalance;elsereturn-1;voidperformDial()if(connected)
24、balance-=0.5;类头静态属性-域动态属性-方法类体类定义5.在Java中定义和使用类l类的定义:即类的声明。通过类,用户可以定义自己需要的数据类型。l定义类的语法为:其中,class关键字标明此定义为类,中括号里的内容为可选内容。例:public class AppletInOut extends Applet implements ActionListener类修饰符class类名extends父类名implements接口名序列5.在Java中定义和使用类类修饰符:labstract:抽象类,说明该类不能被实例化。lfinal:最终类,说明该类不能被继承,即没有子类。lpubli
25、c:公共类,说明该类可以被所有的类访问和引用。类修饰符class类名extends父类名implements接口名序列5.在Java中定义和使用类l抽象类:没有具体对象的概念类,表示一个抽象的概念,不能实例化。“动物”:多细胞生物,有固定的身体结构,可生长、运动、发声等等“人”是一种“动物”“马”是一种“动物”“鸟”是一种“动物”l抽象类的作用:表示抽象的概念;建立类之间的关系,在产生子类的同时为子类定义好某些特定的属性和方法。不存在某个动物,既不是人,也不是马,又不是鸟,.5.在Java中定义和使用类l最终类:final修饰,不能被继承,即没有子类。通常是一些有固定作用、用来完成某种标准功能
26、的类。例如:5.在Java中定义和使用类l类体:定义了该类所有的属性(域)和该类所提供的方法。l定义类体的语法:修饰符变量类型属性名1;修饰符变量类型属性名2;修饰符返回类型方法名1(参数列表)throw异常列表/方法体修饰符返回类型方法名2(参数列表)throw异常列表/方法体5.在Java中定义和使用类使用类:创建该类的对象。l格式:l含义:首先说明新建对象所属的类名,然后说明新建对象的名字,最后用new为新建对象开辟内存空间,并调用构造函数对对象进行初始化。像声明变量需要为变量开辟内存空间保存数据一样,创建对象也需要为对象开辟内存空间保存该对象的数据。l例:PhoneCard myCar
27、d=new PhoneCard();类名对象名new构造函数();5.在Java中定义和使用类l访问或调用某个对象的属性或方法:l例如:myCard.balance=50.0;myCard.performConnection(1234L,5678);对象名.属性名/方法名(参数)5.在Java中定义和使用类构造函数:创建对象时将调用这个对象的构造函数完成对象的初始化工作。声明变量时可以用赋值语句为它赋初值,而一个对象可能包括若干个域,需要若干个赋值语句,把若干个赋初值的语句组合成一个方法在创建对象时一次性同时执行,这个方法就是构造函数。l构造函数的名字与类相同,new算符开辟了新建对象的内存空
28、间之后,将调用构造函数对新建对象进行初始化。5.在Java中定义和使用类构造方法是一种特殊的方法,具有以下特点:(1)构造方法的方法名必须与类名相同。(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。(5)构造方法可以重载,以参数的个数、类型或排列顺序区分。(6)构造方法不能由编程人员调用,而要系统调用。publicclassPhoneCardlo
29、ngcardNumber;privateintpassword;doublebalance;StringconnectNumber;booleanconnected;PhoneCard(longcn,intpw,doubleb,Strings)cardNumber=cn;password=pw;balance=b;connectNumber=s;connected=false;booleanperformConnection(longcn,intpw)doublegetBalance()voidperformDial()PhoneCardnewCard=newPhoneCard(1234567
30、8L,1234,50.0,”300”);如果用户自定义类未定义类的构造函数,系统将为这个类缺省定义一个空构造函数,没有形式参数,也没有任何具体语句,不完成任何操作。if(pw=123456)System.out.println(“toosimple”);System.exit(1);1.面向对象思想2.面向对象的优点3.抽象与封装4.Java的类5.在Java中定义和使用类6.域7.方法6.域域:是类和对象的静态属性,通常描述类的状态。l定义域的语法:l变量类型:基本数据类型、类、数组、接口 l定义域的操作就是说明变量或创建对象的操作。l例:修饰符变量类型属性名;longcardNumber;
31、privateintpassword;doublebalance;StringconnectNumber;booleanconnected;6.域域修饰符:lpublic:说明该属性在任何地方可见lprivate:该属性只在本类中可见lprotected:该属性在本包和子类中可见lstatic:静态域,该属性为类的属性lfinal:该属性的值在程序执行过程中保持不变l修饰符变量类型属性名;6.域静态域:用static修饰符修饰l特点:是类的域,不属于任何一个类的具体对象。它不保存在某个对象的内存区间中,而是保存在类的内存区域的公共存储单元。l对于该类的任何一个对象而言,静态域是一个公共的存储单
32、元,任何一个类的对象访问它时,取到的都是相同的数值;同样任何一个类的对象去修改它时,也都是在对同一个内存单元进行操作。classPhoneCard200staticStringconnectNum=200;staticdoubleadditoryFee;longcardNum;privateStringpassword=*;doublebalance;publicclassTestStaticFiledpublicstaticvoidmain(Stringargs)PhoneCard200card1=newPhoneCard200();PhoneCard200card2=newPhoneCar
33、d200();card1.additoryFee=0.1;System.out.println(card1的附加费:+card1.additoryFee);System.out.println(card2的附加费:+card2.additoryFee);System.out.println(PhoneCard200的附加费:+PhoneCard200.additoryFee);card2.additoryFee=0.2;System.out.println(card1的附加费:+card1.additoryFee);System.out.println(card2的附加费:+card2.add
34、itoryFee);System.out.println(PhoneCard200的附加费:+PhoneCard200.additoryFee);6.域最终域:用final修饰,取值在程序的整个执行过程中都不会改变。例如:l用final修饰符声明域时,需要注意:(1)需要说明该最终域的数据类型。(2)需要指出该最终域的具体取值。(3)由于所有类对象的最终域的数值都固定一致,通常声明为static。classPhoneCard200staticfinalStringCONNECT_NUM=200;staticdoubleadditoryFee;classPhoneCard200staticfin
35、alStringconnectNum=200;staticdoubleadditoryFee;longcardNum;privateStringpassword=*;doublebalance;publicclassTestFinalFieldpublicstaticvoidmain(Stringargs)PhoneCard200card1=newPhoneCard200();System.out.println(PhoneCard200的connectNum:+PhoneCard200.connectNum);card1.connectNum=201;1.面向对象思想2.面向对象的优点3.抽
36、象与封装4.Java的类5.在Java中定义和使用类6.域7.方法7.方法方法:类的动态属性,说明类具有的功能和操作。l定义方法的语法格式:例:修饰符返回类型方法名(参数列表)throw异常列表方法体各语句;publicstaticvoidmain(Stringargs)PhoneCard200card1=newPhoneCard200();System.out.println(PhoneCard200的connectNum);7.方法定义方法的目的:定义具有相对独立和常用功能的模块,使程序结构清晰,利于模块在不同场合的重复利用。publicclassPerfectNumpublicstati
37、cvoidmain(Stringargs)for(inti=1;i1000;i+)if(isPerfect(i)System.out.print(i+String.valueOf(t);System.out.println();staticbooleanisPerfect(intx)inty=0;for(inti=1;ix;i+)if(x%i=0)y+=i;if(y=x)returntrue;elsereturnfalse;调用方法7.方法方法修饰符:lpublic:共有方法,该方法可被任何类中的方法访问lprivate:私有方法,只能被本类中的方法访问lprotected:可被本类和子类中的
38、方法访问labstract:抽象方法,必须在子类中重载lstatic:类方法lfinal:最终方法,不能被子类改变(不能重载)lnative:本地方法lsynchronized:同步方法7.方法抽象方法:abstract修饰,仅有方法头,而没有具体的方法体和操作实现的方法。例如“动物”:多细胞生物,有固定的身体结构,可生长、运动、发声“人”是一种“动物”“马”是一种“动物”“鸟”是一种“动物”可以为抽象类Animal定义一个没有方法体的抽象方法:abstract void sound();至于方法体的具体实现,则留到当前类的不同子类在它们各自的类定义中完成。也就是说,各子类在继承了父类的抽象方
39、法之后,分别在子类中用不同的语句和方法体来重新定义它,形成若干个名字相同,返回值相同,参数列表也相同,目的一致但是具体实现不同的方法。统一接口7.方法抽象方法:必须存在与抽象类之中,在非抽象类中出现抽象方法是非法的。也即,一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽象方法书写方法体。abstractclassAClassinta1;floata2;abstractvoida1();publicvoida2()abstractvoida3();abstractclassBClassextendsAClassvoida1()abstractvoida3();classCClassext
40、endsAClassvoida1()voida3()7.方法静态方法:用static修饰,是属于整个类的类方法。使用静态方法注意:n调用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名;n非static的方法是属于某个对象的方法,在这个对象创建时对象的方法在内存中拥有自己专用的代码段;而static的方法是属于整个类的,将随着类的定义分配和装载,不被任何一个对象专有;n由于static方法是属于整个类的,只能处理属于整个类的成员变量,不能操纵和处理属于某个对象的属性,即,static方法只能处理static域。lpublic class TestStaticMethod public
41、static void main(String args)lInteger i=new Integer(25);lSystem.out.println(i.intValue()*2);lSystem.out.println(i.floatValue();lSystem.out.println(i=+i.toString();llSystem.out.println(Integer.parseInt(100)*2);lSystem.out.println(100*2=+Integer.toString(100*2);lSystem.out.println(Integer.valueOf(100)
42、.intValue()*2);System.out.println(Integer.MAX_VALUE);lSystem.out.println(Integer.MIN_VALUE);llpublicintintValue()publicstaticIntegervalueOf(Strings)throwsNumberFormatException7.方法最终方法:用final修饰,功能和内部语句不能被更改,即是不能被子类重新定义。l在面向对象的程序设计中,子类可以把从父类继承的某个方法改写并重新定义,形成同父类方法同名、解决的问题也相似、但具体实现和功能却不一致的方法,这个过程称为重载。l如
43、果类的某个方法被final修饰符所限定,则该类的子类就不能再重新定义与此方法同名的自己的方法,只能使用从父类继承来的方法。l作用:固定这个方法所对应的具体操作,可以防止子类对父类关键方法的错误的重定义,保证程序的安全性和正确性。类、属性、方法的访问控制符:限定类、域或方法是否可以被程序里的其他部分访问和调用。无论修饰符如何定义,一个类总能够访问和调用它自己的域和方法,但是这个类之外的其他部分能否访问这个域或方法,要看域和方法以及它所属的类的访问控制符。l类的访问控制符只有一个public,域和方法的访问控制符有四个,分别为public、private、protected,和“缺省”。类的访问控
44、制:包:是类的一种松散的集合,Java通过包的概念来组织类的。处于同一个包中的类可以不需任何说明地互相访问和引用。在不同包中的类,一般说来,它们相互之间不能互相引用。public公有类可以通过import语句被其他包中的类访问,其他包中的类在程序中使用import语句引入public类,就可以访问这个类。缺省(无访问控制符)public同一包中的类可访问可访问不同包中的类不可访问可访问(需要import)属性和方法的访问控制:规定了属性和方法可否被本类之外的其他类访问。public成员:可以被所有类访问(需要import)private成员:不能被任何其它类访问(只能被本类访问)protect
45、ed成员:可以被子类、同一包中的类、本类访问缺省成员:可以被同一包中的类、本类访问public类中属性和方法的访问控制:规定了属性和方法可否被本类之外的其他类访问。public成员:可以被同一包中的类访问private成员:不能被任何其它类访问(只能被本类访问)protected成员:可以被同一包中的类访问缺省成员:可以被同一包中的类访问缺省类中package1publicClassAClassBpublicTestP1publicinta;privateintb;protectedintc;intd;publicinta;privateintb;protectedintc;intd;pack
46、age2publicClassCClassDpublicinta;privateintb;protectedintc;intd;publicinta;privateintb;protectedintc;intd;ClassAclassA;ClassBclassB;ClassCclassC;ClassDclassD;classA.a;classA.b;classA.c;classA.d;classB.a;classB.b;classB.c;classB.d;classC.a;classC.b;classC.c;classC.d;classD.a;classD.b;classD.c;classD.d;