Java面向对象程序设计.doc





《Java面向对象程序设计.doc》由会员分享,可在线阅读,更多相关《Java面向对象程序设计.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。第三章 Java面向对象程序设计 3.1 了解面向对象程序设计的基本概念 3.2 掌握类的使用方法 3.3 熟悉对象的创立与使用方法 3.4 了解包的创立与使用方法 3.1 了解面向对象程序设计的基本概念 一、 对象 现实世界中, 对象( Object) 就是客观存在的某一事物。一辆自行车, 一台计算机, 它们都能够视为对象。对象普遍具有两个特征: 状态( 属性) 和行为。比如, 小鸟有名称、 体重、 颜色等状态和飞行、 觅食等行为; 同样, 自行车也有品牌、 外观、 重量等状态和刹车、 加速、 减速等行为。 在面向对象程序设计中,
2、 对象是一组数据和相关方法的集合。程序中可经过变量向其传递或获取数据, 而经过调用其中的方法执行某些操作。在Java中, 对象必须基于类来创立。 类是用来描述一组具有共同状态和行为的对象的原型, 是对这组对象的概括、 归纳与抽象表示。 在面向对象程序设计中, 能够让具有共同特征的对象形成类, 它定义了同类对象共有的变量和方法。经过类能够生成具有特定状态和行为的实例, 这便是对象。 从某种程度上讲, Java编程就是设计类, 在编程中能够采用自定义方法或继承方法设计一个类。另外, 还可在编程时利用类来创立对象, 然后改变对象变量值和调用对象方法来实现程序的某些功能。 二、 类三、 封 装 封装(
3、 Encapsulation ) 是将代码及其处理的数据绑定在一起的一种编程机制, 该机制保证了程序和数据都不受外部干扰且不被误用。理解封装性的一个方法就是把它想成一个黑匣子, 它能够阻止在外部定义的代码随意访问内部代码和数据。对黑匣子内代码和数据的访问经过一个适当定义的接口严格控制。 封装的目的在于使对象的设计者和使用者分开, 使用者不必知道对象行为实现的细节, 只需要使用设计者提供的接口来访问对象。 封装是OOP设计者追求的理想境界, 它能够为开发员带来两个好处: 模块化和数据隐藏。模块化意味着对象代码的编写和维护能够独立进行, 不会影响到其它模块, 而且有很好的重用性; 数据隐藏则使对象
4、有能力保护自己, 它能够自行维护自身的数据和方法。因此, 封装机制提高了程序的安全性和可维护性。 四、 继承 继承是面向对象程序设计中两个类之间的一种关系, 是一个类能够继承另一个类( 即它的父类) 的状态和行为。被继承的类称为超类或父类, 继承父类的类称为子类。一个父类能够同时拥有多个子类, 这时这个父类实际上是所有子类的公共变量和方法的集合, 每一个子类从父类中继承了这些变量和方法。 然而, 子类也能够不受父类提供的状态和行为的限制。子类除了具有从父类继承而来的变量和方法外, 还能够增加自己的变量和方法。子类也能够改变从父类继承来的方法, 即能够覆盖继承的方法。继承使父类的代码得到重用,
5、在继承父类提供的共同特性的基础上增加新的代码, 从而使编程不必一切从头开始, 进而有效提高了编程效率。 五、 多态多态性能够用”一个对外接口, 多个内在实现方法”来表示。也就是说, 我们能够在一个类中定义多个同名方法, 程序在调用某个方法时, 系统会自动根据参数类型和个数的不同调用不同的方法, 这种机制被称为方法重载。 另外, 当我们利用继承由父类创立子类时, 如果父类中的某些方法不适合子类, 我们无法删除它们, 但能够重新定义它们, 这被称为覆盖。如此一来, 当我们利用子类创立对象时, 如果调用对象的某个方法, 系统会首先在子类中查找此方法。如果找到, 则调用子类的方法; 否则, 将向上查找
6、, 即在父类中查找此方法。这种情况被称为父类与子类之间方法的多态性。 3.2 掌握类的使用方法 下面我们结合Java程序的格式来详细介绍类的声明方法: package 包名 / 声明程序所在包import 包名.* / 导入外部包, 可包含多条import语句, 以导入多个外部包中的类import 包名.类名/ 声明和定义类类修饰符 class 类名extends 父类名称implements 接口名称列表/ 声明成员变量或常量访问控制修饰符staticfinal 变量名或常量名;/ 定义其它成员变量或常量/ 声明和定义成员方法 访问控制修饰符abstractstaticfinalnative
7、synchronized返回类型 方法名(参数列表) throws 异常类型列表/ 方法体/ 定义其它方法/ 定义其它类解释说明: ( 1) 在一个Java文档中能够包含多个类, 但最多只能有一个为公 共类( 即public class, 也能够没有) 。 ( 2) 如果存在public class的话, 该类的类名必须与文档名相同。( 3) main方法是Java应用程序的入口, 如果文档中存在public class和main方法, 则main方法必须位于public class中。 main方法的格式如下: public class 类名 / 成员变量列表public static vo
8、id main(String args) / 局部变量声明/ 方法体一、 类声明类声明定义了类的名字及其它属性。类声明的一般格式如下: 类修饰符 class 类名extends 父类名称implements 接口名称列表 其中, class关键字和类名是必须的, 表示可选项。类名是要声明的类的名字, 它必须是一个合法的Java标识符, 习惯上首字母要大写。 1类修饰符 类修饰符有public、 abstract和final。如果没有声明这些类修饰符, Java编译器默认该类为friendly类, 对于这些类, 只有同一包中的类能够访问。 public( 公共的) : 带有public修饰符的类
9、称为公共类, 公共类能够被 任何包中的类访问。不过, 要在一个类中使用其它包中的类, 必须在 程序中增加import语句 。 abstract( 抽象的) : 带有abstract修饰符的类称为抽象类, 相当于类 的抽象。一个抽象类能够包含抽象方法, 而抽象方法是没有方法体的 方法, 因此抽象类不具备具体功能, 只用于衍生出子类。因此, 抽象 类不能被实例化。 final( 最终的) : 带有final修饰符的类称为最终类。不能经过扩展最 终类来创立新类。也就是说, 它不能被继承, 或者说它不能派生子类。2说明一个类的父类 extends关键字用来告诉编译器创立的类是从父类继承来的子类, 父类
10、必须是Java系统的预定义类或用户已经定义好的类。一个类只能有一个父类, 但一个父类能够有多个子类。 3说明一个类所实现的接口 implements关键字用来告诉编译器类实现的接口, 一个类能够实现多个接口, 多个接口之间用逗号分隔, 其形式为: implements interface1,interface2,; 使用接口的主要目的是为了使程序的功能描述和功能的具体实现相分离, 从而使程序结构更清晰。 4类体类体是类功能实现的主体, 是Java语句的集合。类体中一般定义三类要素: 成员变量和常量、 构造方法和方法。其中, 成员变量和常量用来刻画对象的状态, 方法用来描述对象的行为, 而构造方
11、法一般用来初始化成员变量。 1访问控制修饰符 使用访问控制修饰符能够限制访问成员变量或常量的权限。访问控制修饰符有4个等级: private、 protected、 public以及默认( 即不指定修饰符) 。 二、 成员变量与常量 成员变量或常量声明必须放在类体中, 其一般形式为: 访问控制修饰符static 变量名; 访问控制修饰符staticfinal 常量名;类型privateprotectedpublic默认所属类可访问可访问可访问可访问同一个包中的其它类不可访问可访问可访问可访问同一个包中的子类不可访问可访问可访问可访问不同包中的子类不可访问可访问可访问不可访问不同包中的非子类不可
12、访问不可访问可访问不可访问2static变量( 类变量或静态变量) Java中包括两种类型的成员变量: 实例成员变量和类成员变量, 简称实例变量和类变量。如果用static关键字修饰成员变量, 则该变量是一个类变量( 又称静态变量) 。不加static修饰的成员变量称为实例变量。 package Chapter3class ConcentCirclepublic static int x=100,y=100;/定义圆心坐标变量public int r;/定义半径变量public static void main(String args)ConcentCircle t1=new ConcentC
13、ircle();/创立对象ConcentCircle t2=new ConcentCircle();t1.x+=100;/设置圆心的横坐标t1.r=50;/初始化半径变量t2.x+=200;t2.r=150;System.out.println(Circle1:x=+t1.x+,y=+t1.y+,r=+t1.r);System.out.println(Circle2:x=+t2.x+,y=+t2.y+,r=+t2.r); 三、 方法的声明与实现1方法定义的一般形式 在Java中, 方法在类体中定义。与类一样, 方法的定义也包括两个部分: 方法声明和方法体。方法声明的一般形式为: 访问控制修ab
14、stractstaticfinalnativesynchronized 返回类型 方法名(参数列表) throws 异常类型 /方法体2方法的修饰符 方法的修饰符分为访问控制修饰符和非访问控制修饰符。方法的访问控制修饰符与成员变量的访问控制修饰符的用法是一样的 。( 1) abstract方法( 抽象方法) 带有abstract修饰的方法称为抽象方法, 是指没有方法体的方法。不过, 抽象方法只能出现在抽象类中。( 2) static方法( 类方法或静态方法) 方法与成员变量类似, 也分为实例方法和类方法( 又称静态方法) 。带有static修饰符的方法称为类方法, 不加static修饰的方法称
15、为实例方法。 实例方法是属于某个对象的方法, 即每个对象的实例方法都有自己专用的内存空间。类方法是属于整个类的, 它被该类的所有对象共享。类方法与实例方法请参考【例5】。( 3) final方法( 最终方法) 带有final修饰的方法称为最终方法。在面向对象程序设计中, 子类能够覆盖父类的方法。可是, 如果父类的某个方法被final修饰, 则其子类就不能覆盖这个方法, 只能继承这个方法。因此, 这样能够防止子类对父类的关键方法进行修改, 保证了程序的安全性。 ( 4) native方法( 本地方法) 用其它语言编写的方法在Java程序中称为本地( native) 方法。由于native方法的方
16、法体是使用其它语言在程序外部编写的, 因此native方法没有方法体。 ( 5) synchronized方法( 同步方法) 同步方法用于多线程编程。多线程在运行时, 可能会同时存取一个数据。为了避免数据的不一致性, 能够将方法声明为同步方法, 进而对数据加锁, 以保证线程的安全。( 6) throws异常类型列表 程序在运行时可能会发生异常现象。每一个异常都对应着一个异常类。如果希望方法忽略某种异常, 可将其抛出, 让它的”上级”( 如调用它的对象等) 来处理, 从而使程序得以继续运行。3方法的返回类型 一个方法必须声明其返回类型, 方法的返回类型能够是Java中的任意数据类型。当一个方法不
17、需要返回数据时, 返回类型必须是void( 空) 。 如果一个方法具有返回值, 则在方法体中使用return语句把一个确定的值返回给调用该方法的语句。 4方法的参数传递 当编写一个方法时, 一般会在方法名之后给出一个参数列表( 称为方法的形参) 来声明该方法所需要的参数类型和参数。参数列表由参数类型和参数名称组成, 各参数之间用逗号分隔。 在Java中, 可传递的参数( 称为方法的实参) 能够是任何数据类型, 包括基本数据类型、 数组或对象, 它必须与方法的形参完全对应。其中, 传递基本类型的参数时, 编译器会将参数的值传递到方法中。在方法中修改传递过来的参数的值, 并不会影响原参数的值。请参
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 程序设计

限制150内