Java(一)串讲笔记 ……(3) 第3章面向对象编程基础
面向对象的基本概念
抽象:抽象(Abstraction)是程序设计中最经常使用的技术之一,因为抽象是有效控制程序复杂性的重要手段。程序设计中利用抽象,在面向过程阶段,系统按函数和模块进行设计。在面向对象阶段,利用抽象按类设计。类是目前支持抽象的最好工具。
对象:在面向对象语言中,对象的名称用于程序引用对象,对象的成员变量,用于存储对象的状态信息,对象的方法用于描述对象的行为。
消息:在程序系统中,对象之间的交互通过相互发送消息(Message)实现。
类:把同一类对象的所有共同的属性和行为放在一起描述。这种声明对象共有属性和行为的机制称为类。类的声明定义了类的所有对象的共有属性和方法。类是对一组相同对象的描述,类概括了同类对象的共有性质:数据和方法。类的每个对象都有自己的标识,但都具有相同的一组属性和提供相同的一组方法。
继承:继承(Inheritance)就是在已有类的基础上,扩充属性,或扩充与改写其某些方法,生成新的类,这个方式称为继承。继承定义的类称为子类,被继承的类称为超类(父类),子类自动含有父类具有的属性和方法。继承具有传递性。继承的最大好处是对象能按层次划分,并在子类中,与父类相同的属性和方法可以不再重复声明。
多态性
多态性(Polymorphism)有多种表现形式,这里所说的多态性是指类型适应性多态性,这来自继承,不同继承层次的对象同样的方法有不同的实现。类型适应性多态要求能自动按对象的实际类型正确调用它的方法。
类型适应性的多态性需要采用动态联编(DynamicBinding)技术实现。
联编是将发送给对象的消息与含执行该消息方法的对象连接起来。当联编在编译和连接阶段实现时,这样的联编过程称为静态联编;当联编推迟至运行时间实现时,该联编过程称为动态联编。动态联编是面向对象语言必须具有的一种能力,是实现上述多态性的技术基础。
Java的类和对象
类:类是一种类型,类封装对象的属性和方法,是同一类对象的模板。Java程序的主要部分是描述类。
类的声明
class 类名//声明新类的基本格式{
类体
}
成员变量
成员变量定义的一般形式为:[修饰字] 类型 变量名;
其中,修饰字可以空缺,修饰字用于对成员变量限制其访问权限:private、proected、public和友好的。
成员变量对类内定义的方法都有效。类的方法也可定义变量,这种变量称为局部变量,局部变量只在定义它的方法中有效。
方法
方法给出对象的行为,方法声明的一般形式如下:
返回值类型 方法名(类型 参数名, ... ,类型 参数名)
{
方法体
}
如果方法无返回值,就用void关键字。如果某方法中的参数名或局部变量名与类的成员变量名相同,则成员变量在这个方法内暂时被隐藏。如果成员变量在方法内被隐藏,又在方法中要引用成员变量,必须使用this,this表示调用该方法的当前对象。
在Java程序中,类的方法可以重载。方法重载是指在一个类中定义多个有相同名字的方法,但这些方法或者参数个数不同或者按顺序参数的类型不同。
构造方法
构造方法是一种特殊的方法,这种方法的名与它的类名相同,并且不返回结果,也不写上void关键字。
构造方法的作用是创建类的对象,并给对象初始化。程序运行时,当有对象要创建时,由系统自动调用构造方法。如果类的声明没有定义构造方法,系统就增补一个没有参数的默认构造方法。
对象
类被声明后,就可用类创建对象,被创建的对象称为类的实例。程序使用对象需依次经历4个步骤:声明对象、创建对象、使用对象和撤销对象。
声明对象
由于类是一种引用类型,声明对象只是命名一个变量,这个变量能引用类的对象。由于对象还没有创建,
所以也暂不要为对象分配内存。
创建对象
创建对象就是为对象分配内存,为对象分配内存也称类的实例化。一般形式为:new 构造方法([参数表])
对象创建的两个步骤也可一起完成,一般格式为: 类名 对象名=new构造方法([参数表])
对象的内存模型
Java语言将类型分成基本类型和引用类型两种。在Java语言中,数组类型和类类型是引用类型。程序访问引用类型的变量采用间接访问方式。
使用对象
程序使用对象有多种情况:或为对象设置状态、或获取对象的状态、或改变对象的状态、或应用对象的某种方法。前三种需要访问对象的成员变量,最后一种要调用对象的方法。程序通过操作符“.”对某对象的成员变量进行访问和方法调用。一般形式为: 对象名.成员变量 对象名.方法([参数表])
实例变量和类变量
类的成员变量又分为实例变量和类变量。在定义成员变量时,用关键字static修饰的是类变量,定义时未用static修饰的是实例变量。
类变量是类的所有对象共享