【Java精品源码栏目提醒】:以下是网学会员为您推荐的Java精品源码-精品PPT-Java语言程序设计第三章 Java面向对象程序设计 - 产品手册,希望本篇文章对您学习有所帮助。
Java语言程序设计第三章
Java面向对象程序设计 3.1 了解面向对象程序设计的基本概念 3.2 掌握类的使用方法 3.3 熟悉对象的创建与使用方法 3.4 了解包的创建与使用方法
Java语言程序设计3.1 了解面向对象程序设计的基本概念 一、对象 现实世界中,对象(Object)就是客观存在的某一事物。
一辆自行 车,一台计算机,它们都可以视为对象。
对象普遍具有两个特征:状 态(属性)和行为。
比如,小鸟有名称、体重、颜色等状态和飞行、 觅食等行为;同样,自行车也有品牌、外观、重量等状态和刹车、加 速、减速等行为。
在面向对象程序设计中,对象是一组数据和相关方法的集合。
程 序中可通过变量向其传递或获取数据,而通过调用其中的方法执行某 些操作。
在
Java中,对象必须基于类来创建。
Java语言程序设计二、类 类是用来描述一组具有共同状态和行为的对象的原型,是对这组对象的概括、归纳与抽象表达。
在面向对象程序设计中,可以让具有共同特征的对象形成类,它定义了同类对象共有的变量和方法。
通过类可以生成具有特定状态和行为的实例,这便是对象。
从某种程度上讲,
Java编程就是设计类,在编程中可以采用自定义方法或继承方法设计一个类。
此外,还可在编程时利用类来创建对象,然后改变对象变量值和调用对象方法来实现程序的某些功能。
Java语言程序设计 三、封 装 封装(Encapsulation )是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。
理解封装性的一个方法就是把它想成一个黑匣子,它可以阻止在外部定义的代码随意访问内部代码和数据。
对黑匣子内代码和数据的访问通过一个适当定义的接口严格控制。
封装的目的在于使对象的设计者和使用者分开,使用者不必知道对象行为实现的细节,只需要使用设计者提供的接口来访问对象。
封装是OOP设计者追求的理想境界,它可以为开发员带来两个好处:模块化和数据隐藏。
模块化意味着对象代码的编写和维护可以独立进行,不会影响到其他模块,而且有很好的重用性;数据隐藏则使对象有能力保护自己,它可以自行维护自身的数据和方法。
因此,封装机制提高了程序的安全性和可维护性。
Java语言程序设计 四、继承 继承是面向对象程序设计中两个类之间的一种关系,是一个类可以继承另一个类(即它的父类)的状态和行为。
被继承的类称为超类或父类,继承父类的类称为子类。
一个父类可以同时拥有多个子类,这时这个父类实际上是所有子类的公共变量和方法的集合,每一个子类从父类中继承了这些变量和方法。
然而,子类也可以不受父类提供的状态和行为的限制。
子类除了具有从父类继承而来的变量和方法外,还可以增加自己的变量和方法。
子类也可以改变从父类继承来的方法,即可以覆盖继承的方法。
继承使父类的代码得到重用,在继承父类提供的共同特性的基础上增加新的代码,从而使编程不必一切从头开始,进而有效提高了编程效率。
Java语言程序设计 五、多态 多态性可以用“一个对外接口,多个内在实现方法”来表示。
也就是说,我们可以在一个类中定义多个同名方法,程序在调用某个方法时,系统会自动根据参数类型和个数的不同调用不同的方法,这种机制被称为方法重载。
此外,当我们利用继承由父类创建子类时,如果父类中的某些方法不适合子类,我们无法删除它们,但可以重新定义它们,这被称为覆盖。
如此一来,当我们利用子类创建对象时,如果调用对象的某个方法,系统会首先在子类中查找此方法。
如果找到,则调用子类的方法;否则,将向上查找,即在父类中查找此方法。
这种情况被称为父类与子类之间方法的多态性。
Java语言程序设计3.2 掌握类的使用方法 下面我们结合
Java程序的格式来详细介绍类的声明方法: package 包名 // 声明程序所在包 import 包名. // 导入外部包,可包含多条import语句,以导入多个外部包中的类 import 包名.类名 // 声明和定义类 类修饰符 class 类名extends 父类名称implements 接口名称列表 // 声明成员变量或常量 访问控制修饰符staticfinal 变量名或常量名 …… // 定义其他成员变量或常量 // 声明和定义成员方法 访问控制修饰符abstractstaticfinalnativesynchronized 返回类型 方法名参数列表 throws 异常类型列表 …… // 方法体 …… // 定义其他方法 …… // 定义其他类
Java语言程序设计解释说明:(1)在一个
Java文档中可以包含多个类,但最多只能有一个为公 共类(即public class,也可以没有)。
(2)如果存在public class的话,该类的类名必须与文档名相同。
(3)main方法是
Java应用程序的入口,如果文档中存在public class和main方法,则main方法必须位于public class中。
main方法的格式如下: public class 类名 // 成员变量列表 public static void mainString args // 局部变量声明 // 方法体
Java语言程序设计 一、类声明 类声明定义了类的名字及其他属性。
类声明的一般格式如下: 类修饰符 class 类名extends 父类名称implements 接口名称列表 …… 其中,class关键字和类名是必需的,表示可选项。
类名是要声明的类的名字,它必须是一个合法的
Java标识符,习惯上首字母要大写。
1.类修饰符 类修饰符有public、abstract和final。
如果没有声明这些类修饰符,
Java编译器默认该类为friendly类,对于这些类,只有同一包中的类可以访问。
Java语言程序设计 public(公共的):带有public修饰符的类称为公共类,公共类可以被任何包中的类访问。
不过,要在一个类中使用其他包中的类,必须在 程序中增加import语句 。
abstract(抽象的):带有abstract修饰符的类称为抽象类,相当于类 的抽象。
一个抽象类可以包含抽象方法,而抽象方法是没有方法体的 方法,所以抽象类不具备具体功能,只用于衍生出子类。
因此,抽象 类不能被实例化。
final(最终的) :带有final修饰符的类称为最终类。
不能通过扩展最 终类来创建新类。
也就是说,它不能被继承,或者说它不能派生子类。
2.说明一个类的父类 extends关键字用来告诉编译器创建的类是从父类继承来的子类,父类必须是
Java系统的预定义类或用户已经定义好的类。
一个类只能有一个父类,但一个父类可以有多个子类。
Java语言程序设计 3.说明一个类所实现的接口 implements关键字用来告诉编译器类实现的接口,一个类可以实现多个接口,多个接口之间用逗号分隔,其形式为: implements interface1interface2… 使用接口的主要目的是为了使程序的功能描述和功能的具体实现相分离,从而使程序结构更清晰。
4.类体 类体是类功能实现的主体,是
Java语句的集合。
类体中一般定义三类要素:成员变量和常量、构造方法和方法。
其中,成员变量和常量用来刻画对象的状态,方法用来描述对象的行为,而构造方法一般用来初始化成员变量。
Java语言程序设计 二、成员变量与常量 成员变量或常量声明必须放在类体中,其一般形式为: 访问控制修饰符static 变量名 访问控制修饰符staticfinal 常量名 1.访问控制修饰符 使用访问控制修饰符可以限制访问成员变量或常量的权限。
访问控制修饰符有4个等级:private、protected、public以及默认(即不指定修饰符)。
类型 private protected public 默认 所属类 可访问 可访问 可访问 可访问 同一个包中的其他类 不可访问 可访问 可访问 可访问 同一个包中的子类 不可访问 可访问 可访问 可访问 不同包中的子类 不可访问 可访问 可访问 不可访问 不同包中的非子类 不可访问 不可访问 可访问 不可访问
Java语言程序设计 2.static变量(类变量或静态变量)
Java中包括两种类型的成员变量:实例成员变量和类成员变量,简称实例变量和类变量。
如果用static关键字修饰成员变量,则该变量是一个类变量(又称静态变量)。
不加static修饰的成员变量称为实例变量。
package Chapter3 class ConcentCircle public static int x100y100 //定义圆心坐标变量 public int r //定义半径变量 public static void mainString args ConcentCircle t1new ConcentCircle //创建对象 ConcentCircle t2new ConcentCircle t1.x100 //设置圆心的横坐标 t1.r50 //初始化半径变量 t2.x200 t2.r150 System.out.printlnCircle1:xt1.xyt1.yrt1.r System.out.printlnCircle2:xt2.xyt2.yrt2.r
Java语言程序设计 三、方法的声明与实现 1.方法定义的一般形式 在
Java中,方法在类体中定义。
与类一样,方法的定义也包括两个部分:方法声明和方法体。
方法声明的一般形式为: 访问控制修abstractstaticfinalnativesynchronized 返回类型 方法名参数列表 throws 异常类型 ……//方法体
Java语言程序设计 2.方法的修饰符 方法的修饰符分为访问控制修饰符和非访问控制修饰符。
方法的访问控制修饰符与成员变量的访问控制修饰符的用法是一样的 。
(1)abstract方法(抽象方法) 带有abstract修饰的方法称为抽象方法,是指没有方法体的方法。
不过,抽象方法只能出现在抽象类中。
(2)static方法(类方法或静态方法) 方法与成员变量类似,也分为实例方法和类方法(又称静态方法)。
带有static修饰符的方法称为类方法,不加static修饰的方法称为实例方法。
实例方法是属于某个对象的方法,即每个对象的实例方法都有自己专用的内存空间。
类方法是属于整个类的,它被该类的所有对象共享。
类方法与实例方法请参考【例5】。
Java语言程序设计(3)final方法(最终方法) 带有final修饰的方法称为最终方法。
在面向对象程序设计中,子类可以覆盖父类的方法。
但是,如果父类的某个方法被final修饰,则其子类就不能覆盖这个方法,只能继承这个方法。
因此,这样可以防止子类对父类的关键方法进行修改,保证了程序的安全性。
(4)native方法(本地方法) 用其他语言编写的方法在
Java程序中称为本地(native)方法。
由于native方法的方法体是使用其他语言在程序外部编写的,所以native方法没有方法体。
(5)synchronized方法(同步方法) 同步方法用于多线程编程。
多线程在运行时,可能会同时存取一个数据。
为了避免数据的不一致性,可以将方法声明为同步方法,进而对数据加锁,以保证线程的安全。
(6)throws异常类型列表 程序在运行时可能会发生异常现象。
每一个异常都对应着一个异常类。
如果希望方法忽略某种异常,可将其抛出,让它的“上级”(如调用它的对象等)来处理,从而使程序得以继续运行。
Java语言程序设计 3.方法的返回类型 一个方法必须声明其返回类型,方法的返回类型可以是
Java中的任意数据类型。
当一个方法不需要返回数据时,返回类型必须是void(空)。
如果一个方法具有返回值,则在方法体中使用return语句把一个确定的值返回给调用该方法的语句。
4.方法的参数传递 当编写一个方法时,一般会在方法名之后给出一个参数列表(称为方法的形参)来声明该方法所需要的参数类型和参数。
参数列表由参数类型和参数名称组成,各参数之间用逗号分隔。
在
Java中,可传递的参数(称为方法的实参)可以是任何数据类型,包括基本数据类型、数组或对象,它必须与方法的形参完全对应。
其中,传递基本类型的参数时,编译器会将参数的值传递到方法中。
在方法中修改传递过来的参数的值,并不会影响原参数的值。
请参考【例6】与【例7】。
Java语言程序设计5.重载方法
Java支持重载方法,即多个方法可以共享一个名字。
但是,各方法之间必须在参数个数、顺序或类型方面有所区别。
public static String doubleItString data // 参数类型为String System.out.printlndatadata return datadata public static int doubleItint data // 参数类型为int System.out.println2data return 2data
Java语言程序设计6.方法体中局部变量的特点 在方法体中声明的变量称为局部变量,它只能在方法体内使用。
另外,我们也可以利用“……”方式来声明代码块,从而限制局部变量的作用域(即变量可被使用的代码块范围)。
因此,局部变量的作用域开始于它的声明处,结束于当前代码块结束处。
如果没有声明代码块,则其开始于声明处,结束于方法体结束处。
void func int z //局部变量z作用域开始于它的声明处 //程序代码块,声明变量作用域仅限于当前代码块 int x75 //x的作用域到此结束 int y23 //局部变量y的作用域开始于此处 zxy //非法,因为当前位置x变量已经消亡 //局部变量y和z的作用域到此结束。
Java语言程序设计7.在方法体中使用this关键字 this用来表示当前类,它主要有以下几种用法: 当成员变量的名字和局部变量的名字相同时,如果要在方法中访问 成员变量,可以使用this关键字。
在方法体中,通过this关键字可访问当前类的成员变量和方法。
辅助调用类的构造方法,尤其是当构造方法有多个时。
class Point3D extends Point2D protected int x y z public Point3Dint x int y // 第一个构造方法 // 调用类的另一个构造方法,调用该构造方法时,传来的实参x //和y被赋予成员变量x和y,而成员变量z被赋予了0 thisx y 0 public Point3Dint x int y int z // 第二个构造方法 this.x x this.y y this.z z
上一篇:
【精品】开源代码版权定义, 别侵犯版权哦!
下一篇:
关于听觉掩蔽的语音增强算法及DSP实现