- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
五Java高级语言特征
5.1 static关键词 static关键词可以用来修饰类的成员变量、成员方法和内部类,使得这些类成员的创建和使用与类相关而与类的具体实例不相关,因此以static修饰的变量或方法又称为类变量或类方法。 静态方法编写需要注意的问题: 因为静态方法的调用不是通过实例对象进行的,所以在静态方法中没有this指针,不能访问所属类的非静态变量和方法。 子类不能重写父类的静态方法,但在子类中可以声明与父类静态方法相同的方法,从而将父类的静态方法隐藏。另外子类不能把父类的非静态方法重写为静态的。 main()方法是一个静态方法。在main()方法中访问所在类的成员变量或方法,就必须首先创建相应的实例对象。 抽象类的作用: 程序中定义抽象类的目的是为一类对象建立抽象的模型,在同类对象所对应的类体系中,抽象类往往在顶层。一方面使类的设计变得清晰;另一方面抽象类也为类的体系提供通用的接口。 注: 实际上,即使不包括任何抽象方法,也可以将一个类声明为抽象类。这样的类往往是没有必要定义任何抽象方法,而设计者又想禁止创建该类的实例对象,此时只需在类的声明中加上abstract关键词。 接口的定义 接口的定义包括接口声明和接口体两部分,格式如下: 接口声明: [public] interface InterfaceName [extends listofSuperInterface] 接口体: 接口体中包含常量定义和方法定义两部分 接口中定义的常量默认具有public、final、static的属性 type NAME=value; 接口中声明的方法默认具有public和abstract属性 returnType methodName([paramlist]); Interface 的含义 interface定义了一组行为的协议。两个对象之间通过这个协议进行通信。 interface 不属于类层次结构。不相关的类可以实现相同的接口。 Interface 示例 Interface的使用 Interface可以作为一种数据类型使用,并且可以支持多态。任何实现该接口的类都可以认为是该接口的子类,因此声明为某接口类型的变量,可以指向该接口子类的实例,通过这些变量可以访问接口中规定的方法。 通过继承扩展接口 interface Shape { void draw(); void erase(); double area(); } 接口与抽象类 接口与抽象类有一定的相似性,但实际上二者有很大的区别: 接口中的所有方法都是抽象的,而抽象类可以定义带有方法体的不同方法。 一个类可以实现多个接口,而只能继承一个抽象父类。 接口与实现它的类不构成类的继承体系。即接口不是类体系的一部分。而抽象类是属于一个类的继承体系,并且一般位于类体系的顶层。 接口的优势: 可以实现多重继承。 能够抽象出不相关类之间的相似性,而没有强行形成类的继承关系。 5.5 包 ?包(package)是相关类与接口的一个集合,它提供访问控制与命名空间管理。 ? Java平台中的类与接口都是根据功能以包组织的。 ?包机制的好处: 程序员容易确定包中的类是相关的,并且容易根据所需的功能找到相应的类。 每个包都创建一个新的命名空间,因此不同包中的类名不会冲突。 同一个包中的类之间有比较宽松的访问控制。 包定义与使用示例 package graphics.twoD; public class Rectangle { public int width=0; public int height=0; public Point origin; public Rectangle(Point p,int w,int h) { origin=p; width=w; height=h; } public void move(int x,int y) { origin.x=x; origin.y=y; } public int area() { return width*height; } } package graphics.twoD; public calss Point { public int x=0; public int y=0; public Point(int x,int y) { this.x=x; this.y=y; } } import graphics.twoD.*; public class TestPackage { public static void main(String args[]){
文档评论(0)