一、面向对象的基本概念
面向对象最关键的两个词汇是类和对象。面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体。类是具备某些共同特征的实体的集合,它是一种抽象的概念;类是一种抽象的数据类型,它是对具有相同特征的实体的抽象;类是一个模板,描述类的行为和状态。软件对象也有状态和行为,软件对象的状态就是属性,行为通过方法实现,在软件开发中,方法操作对象内部状态的改变,对象的相互调用也通过方法来完成。
面向对象中的主要内容包括类和对象的关系、类的定义、对象的创建、类的三大特征、抽象类和接口等。
二、类和对象
万物皆为对象,对象的实质是属性和行为。在我们的周围会有很多对象,例如人、书本都是对象。所谓对象就是真实世界中的实体,对象和实体都是一一对应的,也就是说现实世界中的每一个实体都是一个对象,它是一种具体的概念。
具有相同特性和行为的对象的抽象就是类,因此对象的抽象就是类,类的具体化就是对象。所以说类是实体对象的概念模型,因此通常是笼统的、不具体的。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也通过方法来完成。
三、成员变量及this、static关键词
根据定义变量位置的不同,可以将变量分成两大类:成员变量(存在于堆内存中,和类一起创建)和局部变量(存在于栈内存中)。二者的运行机制存在较大变异。
成员变量是定义在类中、方法体之外的变量。这种变量会在创建对象的时候自动初始化。
类的构造方法也称类的构造器,每个类中都默认存在一个,与类名完全相同,没有返回值类型修饰符(包括void),没有参数的方法。
构造方法也是类中的方法,支持方法的重载。构造方法的特点:(1)构造方法没有返回值。(2)构造方法的名称要与本类的名称相同。
Public Book(){
... //构造方法体
}
在构造方法中可以为成员变量赋值,这样当实例化一个本类对象时,相应的成员变量也将被初始化。如果类中没有明确定义构造方法,编译器会自动创建一个不带参数的默认构造方法。构造方法分为两总:无参构造方法和有参构造方法。
this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象,而是当前正在编辑的类。
Public void setName(String name){ //定义一个setName()方法
this.name=name; //将参数值赋予类中的成员变量
}
在上述代码中可以看到,成员变量与setName()方法中的形式参数的名称相同,都为name,在java语言中规定使用this关键字来代表蓓蕾兑现的引用,this关键字被隐式地用于引用对象的成员变量和方法,如在上述代码中,this.name指的就是Book类中的name成员变量,而this.name=name语句中的第二个name则指的是形参name。实质上,setName()方法实现的功能就是将形参name的值赋予成员变量name。
其实,this除了可以调用成员变量和成员方法,还可以作为方法的返回值。例如,返回图书类本类的对象,可以写成以下这种形式:
public Book getBook(){
Return this; //返回Book类的本类对象
}
在getBook()方法中,返回值为Book类,所以方法体中使用return this这种形式返回Book类对象。
Static关键字主要用于内存管理。它主要在成员变量、成员方法、块和内部类中使用。static关键字属于类,但不是类的实例。它有三个作用:(1)修饰成员变量;(2)修饰成员方法;(3)静态块。