




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计演示文稿第一页,共九十三页。面向对象程序设计第二页,共九十三页。程序设计方法公共数据函数函数函数函数算法+数据结构数据方法方法数据方法方法过程式程序设计OOP程序设计对象+消息消息第三页,共九十三页。程序设计方法面向过程的程序设计面向过程的程序遵循面向过程的问题求解方法其中心思想是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决过程。算法+数据结构数据结构利用计算机的离散逻辑来量化表达需要解决的问题。而算法则研究如何快捷、高效地组织解决问题的具体过程。面向过程——面向机器第四页,共九十三页。程序设计方法面向对象的程序设计它能够用计算机逻辑来模拟、描述系统本身,包括系统的组成,系统的各种可能状态,以及系统中可能产生的各种过程与过程引起的系统状态切换。面向对象的程序设计是以要解决的问题中所涉及到的各种对象为主要考虑因素。对象是一种看问题的观点,是对现实世界各种元素的一种抽象。对象既含数据又含功能,因此具有自身处理数据的能力。对象被认为是迄今为止最接近真实事物的数据抽象。第五页,共九十三页。对象的几个特征原则上,可以将所要解决的问题中的任何一个“概念组件”在程序中表示为一个对象。所谓对一个对象发信息,就是调用该对象的一个方法。对象+消息第六页,共九十三页。对象的属性与方法面向对象程序设计中的对象是现实世界对象的模型化,它同样具有状态和行为。对象的状态用属性来维护,对象的行为用方法来实现。因此可以简单地讲,对象是面向对象的程序设计模式,它由描述状态的属性(变量)和用来实现对象行为的方法(代码)组成。几种叫法属性—静态属性—域—成员变量状态方法—动态属性—成员方法行为第七页,共九十三页。对象与类类(Class)是同种对象的集合与抽象类是对象的抽象及描述,它是具有统一属性和方法的多个对象的统一描述体,是用来定义一组对象共有属性和方法的模板。类是用来创建对象实例的样板,它包含所创建对象的状态描述和方法的定义。类是一个型,而对象则是这个型的一个实例。类是静态概念,而对象则是一个动态概念,因为只有在运行时才给对象分配空间,对象才真正存在。第八页,共九十三页。对象是类的唯一性实例现实世界
实体抽象数据类型计算机世界对象
类抽象映射
计算机逻辑的实现实例化抽象概念世界第九页,共九十三页。接口与实现类是一种封装技术。如果属性或方法被定义为public,它就是接口的一部分,其他类可以直接访问它。如果属性或方法被定义为private,它就是实现的一部分。只有类自己的方法可以访问它。对象要注意保护自己的数据(私有属性,公有方法)。对象通过它们的方法管理,实现由编程人员控制。通过接口与对象发生作用,内部实现不影响接口(汽车,内部变化不影响驾驶)程序一部分变化不会影响其他部分。复用事先写好的操作可在整个项目中使用重用比重写更容易第十页,共九十三页。对象与类—几种相互关系包含关系当对象A是对象B的属性时,我们称对象B包含对象A。
关联关系当对象A的引用是对象B的属性时,我们称对象A和对象B之间是关联关系。
类之间的继承关系B类继承了A类,就是继承了A类的属性和方法。A类称之为父类,B类称之为子类。第十一页,共九十三页。面向对象程序设计基础第十二页,共九十三页。主要内容抽象封装继承多态类定义重载包接口第十三页,共九十三页。OOP的主要特点抽象去除对象中与主旨无关的次要部分,而仅仅抽取出与研究有关的内容(数据抽象)
第十四页,共九十三页。OOP的主要特点封装(encapsulation)实现了信息的隐藏及安全性提高了程序的模块化,且易于维护第十五页,共九十三页。封装-信息隐藏封装─是一种组织软件的方法。其基本思想是把客观世界中联系紧密的元素及相关操作组织在一起,使其相互关系隐藏在内部,而对外仅仅表现为与其他封装体间的接口。从而构造出具有独立含义的软件实现。封装并不是一个新的概念,但在面向对象的程序设计中提出了一种全新的封装方法─类第十六页,共九十三页。封装-信息隐藏封装─就是利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其他部分只有通过包裹在数据外面的被授权的操作,才能与这些抽象数据类型交流和交互。在面向对象的程序设计中,抽象数据类型是用“类”来代表的。第十七页,共九十三页。封装-信息隐藏每个类里都封装了相关的数据和操作。在实际的开发过程中,类多用来构建系统内部的模块。由于封装特性把类内的数据保护得很严密,模块与模块间仅通过严格控制的界面进行交互,使它们之间耦合和交叉大大减少,从而降低了开发过程的复杂性,提高了效率和质量,减少了可能的错误,同时也保证了程序中数据的完整性和安全性。
第十八页,共九十三页。OOP的主要特点继承(inheritance)体现了对现实世界的抽象模拟提高了代码的复用性交通工具车船飞机汽车火车父类/超类(superclass)子类(subclass)Java仅支持单重继承,但可通过接口实现多重继承第十九页,共九十三页。OOP的主要特点多态(polymorphism)
用同一个名字调用实现不同操作的方法方式1:不同的类之间的同名方法 如:中国人/日本人/美国人说话方式2:参数不同的同名方法使用方便,且降低了维护和编程量第二十页,共九十三页。Java中的类几个概念类:同种对象的集合与抽象系统类库中已定义好的类:是系统提供的已实现的标准类的集合,是Java的API,它可帮助开发者方便、快捷地开发Java程序。用户自定义的类─针对特定问题子类、父类第二十一页,共九十三页。Java中的类Java中的类结构基类:所有Java的类都派生自ObjectJava的类可组织在包(package)中Java提供的标准类库分布在一系列的包中,如java.lang,java.util,等编程的过程就是继承基类或标准类而创建、定义特殊子类的过程第二十二页,共九十三页。Java中类的声明类说明语法:[类修饰符]class类名[extends父类名][implements接口名]{ 成员变量定义; 方法定义;}类体第二十三页,共九十三页。Java中类的声明类修饰符(Modifier):public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类缺省:可被当前包中的其他类访问abstract:没有实例的抽象概念类,是它的所有子类的公共属性和公共方法的集合final:不能再被扩展,不能有子类的类;易于安全性的实现,或用于创建固定功能的类父类继承声明:extends
父类名实现接口(interface):implements
接口名第二十四页,共九十三页。Java中类的声明例:
publicabstractclassshape{……} classrectangleextendsshape{……} finalclassroundrectextendsrectangle{ ……}第二十五页,共九十三页。创建对象对象(实例instance):以类为模板创建的
具体实例(实际个体)创建某个类的具体对象(类似变量声明)类名欲创建的对象名=new类名(参数表);
例如:
Strings=newString(“Hello!”);第二十六页,共九十三页。类的成员变量的声明声明成员变量(member)的语法 [修饰符]数据类型变量名;引用:对象名.变量名修饰符访问控制符public:可被所有其他类引用private:仅可被该类自身引用和修改,不能被其他任何类(包括该类的子类)引用,它提供了最高级别的保护。第二十七页,共九十三页。成员变量的声明protected:该类自身、子类、同一包中的其他类privateprotected:该类自身、子类注:privateprotected仅1.0.2支持,1.1之后不再支持缺省:本包中的类static:类成员变量,对所有的实例一致,引用时前缀可使用类名或对象名final:数值不变常量,定义同时应对其进行初始化
第二十八页,共九十三页。类成员变量(静态变量)静态变量——为类的各实例共享的变量。
static静态变量名;位于类的内存区域中,为该类的各个对象共享.无此限定符的变量是实例变量。
classex{inti;staticintj;staticfinalintk=10;---}final常量可同时定义为static类exjk=10对象1i:3对象2i:5第二十九页,共九十三页。类成员变量(静态变量)实现各实例之间的通讯
对于该类的任何一个对象访问该静态变量时,取得的都是相同的值跟踪创建的实例数
publicclassCount{privateintserial;//实例变量
privatestaticintcounter=0;//静态变量
publicCount(){counter++;serial=counter;}}静态变量类似于某些语言中的全局变量第三十页,共九十三页。类成员变量(静态变量)非private的静态变量无须创建实例就可以从类的外部访问。
classStaticVar{
staticintx=100;}publicclasstest{publicvoidm(){
intm=StaticVar.x;
}}
第三十一页,共九十三页。方法的声明定义对类内成员变量(数据)的操作方法的声明语法:
[修饰符]返回类型方法名(参数列表) [throws例外名]{ 方法体; }方法是类的动态属性,标志了类所具有的功能和操作第三十二页,共九十三页。类的方法定义规则形式参数是方法从调用它的环境输入的数据。返回值是方法在操作完成后返还给调用它的环境的数据。要指定方法返回值类型。如没有返回值,类型要写void方法名相同,但参数不同,是不同的方法。与类名相同的所有方法都是类的构造方法。第三十三页,共九十三页。方法体的定义在方法中定义的变量称为局部变量。其生命周期:执行进入方法体时建立,退出方法时撤消。局部变量使用之前必须初始化。在方法体中可以访问所有的类属性,可以调用所有类中定义的方法。方法可以递归调用。第三十四页,共九十三页。方法的声明修饰符(Modifier):访问控制符:public、private、protected、privateprotectedstatic:静态方法,又称类方法使用类名或对象名作为前缀,建议使用类名在方法体中只能使用static变量和static方法abstract:只有方法头,而没有具体的方法体和操作实现的方法,要在子类中通过重新定义(override)来实现final:不能被重新定义(override)的方法第三十五页,共九十三页。访问控制符是一组起到限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符。类访问控制符公共类:public类名一般类(缺省)一个类被声明为公共类,表明它可以被所有的其他类所访问和引用。程序的其他部分可以创建这个类的对象、访问这个类的内部可见成员变量和调用它的可见方法一般类只能被同一包中的类访问和引用。定义在同一个程序中的所有类属于一个包。访问控制符第三十六页,共九十三页。一个类作为整体对程序的其他部分可见,并不能代表类内的所有成员变量和方法也同时对程序的其他部分可见,前者只是后者的必要条件成员变量和方法的可见性域和方法的访问限定符只限在本类内使用。private可被同包中其他类使用。可被子类继承(包括位于不同包中的子类)protected公共变量和公共方法,可被任何类使用。public可被同包中其他类使用。无访问限定符第三十七页,共九十三页。域和方法的访问限定符为了使对象具有良好的封装性,一般将类的实例变量设计成私有。为了使其它类或对象能够访问私有实例变量,本类必须提供访问私有变量的方法(公共方法)。按照惯例,读私有变量的方法取名为get…
写私有变量的方法取名为set…
第三十八页,共九十三页。方法的声明(续)返回类型:void、return参数列表:参数类型可为类类型throws:通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程序段。第三十九页,共九十三页。方法的参数参数是值传递对象的内容可以改变,但对象的引用决不会改变。方法的参数可以与类的成员变量同名,这时,参数在方法体中将隐藏同名的成员变量。
classcircle{intx,y,radius;setCircle(intx,inty,intradius){…}}第四十页,共九十三页。值传送与地址传送ABABAB引用类型值传送基本类型值传送地址传送40x2F0x2F第四十一页,共九十三页。方法的说明为Employee类增加打印方法——将数据和代码封装在一个单一的实体中。
classEmployee{Stringname;intage;floatsalary;voidprint(){System.out.println(name+“年龄为:”+
age+“月薪为:”+salary);}}//class第四十二页,共九十三页。对象方法的含义
Employeeemp=newEmployee();=“张立”;
emp.age=21;emp.salary=528.37F;一旦对象被建立并被初始化,就可以调用该方法打印这个对象的数据。
emp.print();对象emp执行print方法操作自己的数据。向对象发消息,让对象做某件事。第四十三页,共九十三页。this与superthis和super是常用来指代子类对象和父类对象的关键字。Java系统默认,每个类缺省地具有null、this和super三个域,所以在任意类中都可以不加说明而直接使用它们。this表示的是当前对象本身,更确切地说,this代表了当前对象的一个引用。利用this可以使用当前对象的域,调用当前对象的方法。super
表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。第四十四页,共九十三页。方法中使用this
classBanana{voidf(inti){...}}Bananaa=newBanana();b=newBanana();a.f(1);b.f(2);方法如何知道是处理哪个对象?编译做了一些内部处理
Banana.f(a,1);
Banana.f(b,2);
把一个隐含的参数传给了方法—指向被操作对象的引用。第四十五页,共九十三页。thisthis
只能在方法中使用,表示当前对象,或类的当前实例。this适用于一些特殊的场合。例:
publicclassMyDate{intday,month,year;publicvoidborn(){Birthdaybd=newBirthday(this);…}}第四十六页,共九十三页。Java中的多态多态:同一程序中同名的不同方法共存可以通过子类对父类方法的覆盖实现多态可以利用重载(overload)在同一个类中定义多个同名的方法多态情况下进行方法调用时,如何区分这些同名的不同方法不同类中的同名方法:冠以类名以示区别同类中的同名方法:用不同的参数列表(参数的个数,类型,顺序的不同)来区别同名的不同方法第四十七页,共九十三页。多态例:Shapes.java三个类Circle、Square、Triangle均有draw()方法和erase()方法,但不同类的方法的具体操作其实并不相同,实现了多态。draw()erase()draw()erase()draw()erase()第四十八页,共九十三页。Overloding方法重载用同一个名字来表示不同的方法。这些方法同名的原因,是因为它们的最终功能和目的都相同,但由于在完成同一功能时,可能遇到不同的具体情况,所以需要定义含不同的具体内容的方法。方法名必须相同(是同一类中定义同名方法的情况)。方法的参数必须不同(同名不同方法是靠不同形式的参数列表来区分,包括形式参数的个数、类型、顺序的不同)。返回类型可以不同,但不是重载的标志。利用“重名”现象提高程序的抽象度和简洁性。第四十九页,共九十三页。方法的重载例:(相同类型的工作,不同的参数)
publicvoidprintln(inti);publicvoidprintln(floatf);publicvoidprintln(Strings);
Integer类
StringtoString();staticStringtoString(inti);Double类
StringtoString();staticStringtoString(doubled);在一个类中,不可以存在两个只有返回值不同的方法
第五十页,共九十三页。构造方法(constructor)问题的提出Java试图在每个对象一诞生时,就给它一确定的状态,但有时这种系统的缺省初值不合适;所以
在创建一个新对象时,需用构造方法完成合法的
初始化,使类内成员的初始化工作不依赖于外界
完成。第五十一页,共九十三页。构造方法构造方法是一种特殊的成员方法,在创建每个新的类对象时自动执行,以保证新对象的各成员有合法、确定的数值。构造方法的名字就是类的名字。构造方法没有返回类型。主要用于完成变量的初始化;另外,一个类中可以存在多个构造方法(重载),这些构造方法之间可以互相调用,当一个构造方法调用另一个构造方法时,要使用关键字this,同时这个调用语句应该是整个构造方法的第一条可执行语句。第五十二页,共九十三页。构造方法构造方法只能在创建类对象时由系统隐含调用,而不能直接引用;类对象创建时,利用运算符new在内存中开辟专用空间,存放指定的类的实例(即对象),这时会自动执行类的构造方法,初始化新对象的成员变量。第五十三页,共九十三页。定义构造方法
Employee(Stringn,inta,floats){name=n;if(a>=18&&a<=60)age=a;else{System.out.println("illegalage");System.exit(1);}salary=s;}第五十四页,共九十三页。构造方法的重载D200_Card(){}//没有参数的构造方法D200_Card(longcn){//有一个参数的构造方法
cardNumber=cn;//初始化电话卡号}D200_Card(longcn,intpw){//两个参数的构造方法
cardNumber=cn; password=pw;//密码}D200_Card(longcn,intpw,doubleb){ cardNumber=cn;//三个参数的构造方法
password=pw;
balance=b;//余额}第五十五页,共九十三页。构造方法的重载D200_Card(longcn,intpw,doubleb,Stringc){ cardNumber=cn;//四个参数的构造方法
password=pw; balance=b; connectNumber=c;//接入号码}调用不同的构造方法D200_Cardmy200=newD200_Card(); D200_Cardmy200=newD200_Card(12345678,1234);D200_Cardmy200=newD200_Card(12345678,1234,50.0);第五十六页,共九十三页。构造方法之间的调用D200_Card(longcn){ cardNumber=cn;}D200_Card(longcn,intpw){ this(cn); password=pw;}D200_Card(longcn,intpw,doubleb){ this(cn,pw); balance=b;}
D200_Card(longcn,intpw,doubleb,Stringc){ this(cn,pw,b); connectNumber=c;}
第五十七页,共九十三页。继承继承是一种由已有的类创建新类的机制,是面向对象程序设计的基石之一。子类继承父类的非私有属性和方法,还可以定义新的属性和方法,改写父类的方法。继承实际上是存在于面向对象程序中的两个类之间的一种关系。Java要求每个类都有父类(隐含为java.lang包中的Object类)。super是对父类的引用,引用父类的构造方法、父类成员属性和方法。第五十八页,共九十三页。Java中类的继承创建类时指明它为某存在类的子类
extends
超类/父类名父类来自系统类库用户自定义类子类将继承除private外所有父类成员Java不支持多重继承(但可用接口实现)第五十九页,共九十三页。Java中类的继承子类对父类可做扩展和特殊化创建新的成员:变量和方法m_lNextSaveAccNum,m_lNextCheckAccNum重新定义父类中已有的变量:隐藏m_dInterestRate重新定义父类中已有的方法:覆盖(override)
子类中的方法应与父类中的被覆盖的方法有完全相同的:参数列表、返回值setInterestRate()第六十页,共九十三页。类的继承引用类的成员变量或方法时的前缀this:当前类的方法或变量super:直接父类的成员(只能上溯一层)例:BankAccount类 SaveAccount子类
this.Fee():调用子类的收取费用方法
super.Fee():调用父类的收取费用方法子类对象可类型转换成父类对象(upcast)BankAccountMyBa=(BankAccount)MySa;第六十一页,共九十三页。继承属性:nameagesalary方法:upSalarygetInfoEmployeeEngineerManagerSecretaryDirector属性:allowance方法:setAllowancegetInfo属性:telephonedepartment方法:setTelgetInfo第六十二页,共九十三页。构造方法的继承子类或定义自己的构造方法,或使用隐含构造方法。子类没有定义构造方法时,自动继承父类不含参数的构造方法,并在创建新子类对象时自动执行。子类有自己的构造方法时,创建新子类对象时也要先执行父类不含参数的构造方法,再执行自己的构造方法。第六十三页,共九十三页。构造方法的继承注意构造方法的调用顺序:按继承顺序依次调用父类的不含参数的构造方法,直到到达本子类依次执行本子类成员对象的构造方法最后,执行本子类的构造方法Meal()->Lunch()->PortableLunch()->Bread()->Cheese()->Lettuce()->Sandwich()第六十四页,共九十三页。抽象与抽象类程序员可以先创建一个定义共有属性和方法的一般类,再从一般类派生出具有特性的新类。抽象类实际上是所有子类的公共域和公共方法的集合,而每一个子类则是父类的特殊化,是对公共域和方法在功能、内涵方面的扩展和延伸。
第六十五页,共九十三页。类继承树Objectclassabstractclass
classfinalclassclassJava—单重继承第六十六页,共九十三页。抽象类与最终类abstract抽象类—没有具体对象的概念类较高层次的概括抽象类的作用是让其他类来继承它的抽象化的特征。在程序中不能用抽象类作为模板来创建对象。final最终类—该类不能有子类。电话卡类无卡号类有卡号类磁卡IC卡校园201卡IP卡200卡第六十七页,共九十三页。方法覆盖(overriding)在面向对象的程序设计中,子类可以把从父类那里继承来的某个方法改写,形成同父类方法同名、解决的问题也相似、但具体实现和功能却不尽一致的新方法。定义与父类完全相同的方法,实现对父类方法的覆盖:完全相同的方法名完全相同的参数列表完全相同类型的返回值注意:在满足上述三个条件同时,还必须保证:访问权限不能缩小,抛出的例外要相同第六十八页,共九十三页。包(package)利用面向对象技术开发系统时,通常需要定义许多类共同工作,为了更好地管理这些类,JAVA中引入了包的概念。象文件夹把各种文件组织在一起一样,JAVA中的包把各种类组织在一起,使得程序功能清楚,结构分明。第六十九页,共九十三页。包(package)在操作系统中,目录用来组织文件,设置权限。Java利用包来组织相关的类,并控制访问权限。包是一种松散的类的集合。一般不要求处于同一个包中的类有明确的相互关系,如包含、继承等等。由于同一包中的类在缺省情况下可以互相访问,所以为了方便编程和管理,通常把需要在一起工作的类放在一个包里。利用包来管理类,可实现类的共享与复用(类库)。第七十页,共九十三页。包与目录一个包要放在指定目录下。classpath指定搜寻包的路径。一个包可以包含若干个类文件,还可包含若干包。包名本身又对应一个目录(用一个目录表示)。包名可以有层次,以小数点分割。包名一般全小写(类名第一个字母大写)。第七十一页,共九十三页。包(package)创建packagepackage包名;每一个class在编译的时候被指定属于某一特定的package,用关键字package说明:
packagesrd.math;//命名要注意唯一性,可使用WWW域名publicclassComplexNumber{……}如果package未指定,则所有的
class都被组合到一个未命名的缺省package中,不能被其他包中的类引用package说明必须是非注释非空行的第一行第七十二页,共九十三页。包(package)创建包就是在当前文件夹下创建一个子文件夹,以便存放包中包含的所有类的.class文件。上面创建的包语句中的符号“.”代表了目录分割符,即这个语句创建了两个文件夹。第一个是当前文件夹下的子文件夹srd;第二个是srd下的子文件夹
math,当前包中的所有类就存放在这个文件夹中。第七十三页,共九十三页。包(package)使用包:使用其他包中的class,需在引用类之前冠以包名作前缀用import语句将此包中的某些或所有class加载入当前程序:
importsrd.math.ComplexNumber; importsrd.math.*;包与文件系统每个包对应一个同名的路径,此包中所有class编译生成的.class文件都在此目录中;此目录系统不会自动生成,必须手工创建第七十四页,共九十三页。使用其他包中的类import语句将指定包中的类引入当前的程序中,即告诉编译到哪去找程序中使用的类。
import语句必须出现在所有类定义之前。
例:importjava.util.*;
该语句引入整个utility类库(标准Java库的一部分)例:importjava.util.Vector;
该语句只引入Vector类,但utility类库中的其他类不可用。第七十五页,共九十三页。接口“接口”是抽象类的概念。接口中的方法都是没有方法体的抽象方法。接口中只能定义staticfinal属性。接口定义的仅仅是实现某一特定功能的一组方法的对外接口和规范,而并没有真正地实现这个功能。接口的功能实现是在“继承”了这个接口的各个类中完成的,由这些类来具体定义接口中所有抽象方法的方法体。通常把对接口的“继承”称为“实现”。第七十六页,共九十三页。接口(interface)接口是一种特殊的类,是作为一个整体声明的抽象方法和常量方法:抽象、无定义的(不必写abstract)常量:隐含为final和static的接口定义
publicinterface接口名[extends父接口名列表]{//常量域声明
publicstaticfinal域类型
域名=常量值;
//抽象方法声明
publicabstract返回值类型
方法名(参数列表);}第七十七页,共九十三页。接口(interface)使用接口当一个类声明
implements某一interface时,必须具体实现该interface中定义的抽象方法,并把此方法定义为public的。利用接口可实现多重继承便于设计更合理的类层次,代码更灵活第七十八页,共九十三页。接口的实现
publicclassMyAppletextendsAppletimplementsRunnable,MouseListener{……}一个类只能有一个父类,但是它可以同时实现若干个接口。如果把接口理解成特殊的类,那么这个类利用接口实际上就获得了多个父类,即实现了多继承。instanceof运算符可用来判断一个对象的类是否实现了某个接口。第七十九页,共九十三页。接口的实现一个类要实现接口时,要注意下列问题:在类的声明部分,用implements关键字声明该类将实现那些接口。如果实现了某个接口的类不是abstract的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,即为所有抽象方法定义方法体。如果实现了某个接口的类是abstract的抽象类,则它可以不实现指定接口的所有抽象方法。第八十页,共九十三页。接口的实现接口的抽象方法的访问控制符为public,所以类在实现方法时,必须显式地使用public。实现接口的类要实现接口的全部方法。如果不需要某个方法,也要定义成一个空方法体的方法。如:
public方法名(){}第八十一页,共九十三页。接口例
interfaceCalArea{doublepi=3.14;doublecal(doubler);}classaimplementsCalArea{
publicdoublecal(doubler){returnpi*r*r;}}接口中定义的方法签名不加任何的修饰符:因为必定为public类型第八十二页,共九十三页。接口(interface)例:乐器族谱Music.javaInstrumentWindPercussionStringed我们可以使用接口来实现继承吗?第八十三页,共九十三页。interfaceInstrument{//constant:inti=5;//static&final//Cannothavemethoddefinitions:voidplay();//AutomaticallypublicStringwhat();voidadjust();}classWindimplemen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业单位工会活动方案
- 税务顾问服务协议书
- 云计算服务平台建设合同
- 桩基工程施工专业分包规定合同
- 合同付款补充协议书
- 烟草产品购销合同
- 公司商铺租赁合同书
- 独家代理销售合同
- 办公效率提升解决方案实践
- 旅游行业线上营销推广协议
- 云南矿产资源分布
- 保险第三方理赔调查服务方案
- 我爱运动手抄报电子小报模板(附A4线稿)可打印涂色
- 酒店财务部SOP(标准操作手册)4092
- JJF(纺织)072-2018纺织滚筒式烘干机校准规范
- 干部人事档案专项审核认定表
- GB/T 32722-2016土壤质量土壤样品长期和短期保存指南
- 北京故宫作文600字
- 2009数据结构英文试卷A及答案
- FZ/T 51010-2014纤维级聚对苯二甲酸1,3-丙二醇酯切片(PTT)
- 中等职业学校英语教学大纲词汇表本表共收词2200个左右含
评论
0/150
提交评论