一、面向对象程序涉及的主要概念有抽象、封装、继承、多态。
1、封装:在面向对象的程序设计中,抽象数据类型是用“类”来实现的,类封装了数据及对数据的操作,是程序中的最小模块。
2、继承:单继承是指任何一个派生类都只有单一的直接父类,采用单继承的类层次结构为树状结构;而多继承是指一个类可以有一个以上的直接父类,采用多继承的类层次结构为网状结构。Java仅支持单继承。
3、多态:指一个程序中同名的不同方法共存的情况。主要通过子类对父类方法的覆盖来实现多态。不同类的对象可以响应同名的消息(方法)来完成特定的功能,但其具体实现的实现方法却可以不同。
二、类与对象
对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”这一公式来表达。程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class)。类是具有相同操作功能和相同数据格式(属性)的对象的集合与抽象。一个类是对一类对象的描述,是构造对象的模板,对象是类的具体实例。
(一)类的声明语法形式:
[public] [abstract|final] class 类名称 [<Type{,Type}>] [extends 父类名称] [implements 接口名称列表] { 变量成员声明及初始化; 方法声明及方法体; }
public为存取控制符,表明此类为公有类,abstract指明此类为抽象类,final指明此类为终结类。
(二)数据成员:Java类的状态用数据成员变量来表示,声明数据成员变量必须给出变量名及其所属的类型,同时还可以指定其他特性。其声明格式为:
[public|protected|private] [static] [final] [transient] [volatile] 变量数据类型 变量名 1[=变量初值],变量名 2[=变量初值],…;
说明:①public、protected、private为访问控制符。②static指明这是一个静态变量成员。③final指明变量的值不能被修改。④transient指明变量是临时常量。⑤volatile指明变量是一个共享变量。⑥成员变量的类型可以是Java中任意的数据类型,包括简单类型、类、接口和数组。在一个类中的成员变量名应该是唯一的。
1、实例变量,没有static修饰的变量。用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。可以通过下面的语句来访问实例属性的值:<实例名>.<实例变量名>。
2、类(静态)变量,有static修饰的变量。用来存储经常需要共享的数据。可以通过类名也可以通过实例名来存取类变量的值,格式为:<类名|实例名>.<类变量名>。
(三)类的组织——包的概念
Java提供包机制来管理命名空间。一般情况下,应将相关的类组织到同一个包中。包主要有以下作用:①将相关的源代码文件组织到一起;②不同包中的类名可以相同,从而可以避免名字冲突;③提供包一级的封装及存取权限。
Java使用文件系统来存储包和类,类名就是文件名,包名就是文件夹名,即目录名,但反之,目录名并不一定是包名。在编写Java源程序时,对每个编译单元(.java文件),可以在文件的开头位置用package语句制定所属的包,package语句的语法形式为:
package PackageName;
引入包,为了使用其他包中所提供的类,需要使用import语句引入所需要的类。import语句的格式为:
import package1[.package2…].(classname|*);
其中package1[.package2…]表明包的层次,它对应于文件目录,classname则指明所要引入的类名,如果要引入一个包中的所有类,则可以使用星号(*)来代替类名。Java中包名使用小写字母表示,类名的第一个字母使用大写。
(四)类的访问控制:只有public(公共类)及无修饰符(默认类)两种。当使用public修饰符时,表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此 类处于同一包中的其他类可以使用此类。在一个编译单元(源程序文件)中至多有一个公共类(public class),且源程序文件名必须与公共类的名字相同(区分大小写)。如果公共类的类名为abc,则源程序文件名为abc.java。
(五)类成员的访问控制:有public、private、protected及无修饰符。①public(共有的):可以被其他任何对象访问(前提是对类成员所在的类有访问控制权限)。②private(私有的):只能被这个类本身访问,在类外不可见。③protected(保护的):只能被同一类及其子类的实例对象访问。④无修饰符(默认的):表明是“friendly”,相应的成分可以被所在包中的各类访问。
(六)构造方法:Java中的每个类都有构造方法,用来初始化该类的一个新的对象。构造方法具有和类名相同的名称,而且不返回任何数据类型。系统在产生对象时会自动执行。构造方法主要有以下特点:①构造方法通常被声明为公有的(public);②构造方法可以有任意多个参数。
1、系统提供的默认的构造方法,没有参数,其方法体为空。使用默认的构造方法初始化对象时,如果在类声明中没有给实例变量赋初值,则对象的属性值为零或空。
2、自定义构造方法与方法重载,如果在一个类中有两个及以上同名的方法,但参数表不同,这种情况就被称为方法重载。
3、自定义无参的构造方法,在声明构造方法时,好的声明习惯是:或者不声明构造方法,如果声明构造方法,通常至少声明两个构造方法,其中一个为无参构造方法。
this关键字的使用:①将接受者对象作为参数发送给另外的方法,需要返回接收者对象等。(引用成员变量)②如果形式参数名与实例变量名相同,则需要在实例变量名之前加this关键字;否则系统会将实例变量当成形式参数。(形参和成员变量同名)③使用this关键字在一个构造方法中调用另外的构造方法,从而使代码更简洁,维护起来也更容易。(同一类中构造方法重载)
发表评论: