Java是一种面向对象的编程语言,面向对象在整个Java的学习中属于重中之重,从这一篇博客开始,将逐步为大家介绍Java面向对象的相关知识,这一偏将为大家介绍对象和类的概念以及如何定义类和创建对象。
一、对象和类的概念
1、对象
以一个人为例,对于人,我们可以从他所具有的特征和所具有的行为来进行分析。
特征:体重、身高、性别、年龄......
行为:吃饭、睡觉、说话......
上面的例子就是对现实世界中的具体事物进行的描述,这些具体的事务就是对像,比如一个人、一辆车。从以上的分析还可以看出,人类在对事物进行描述的时候大多从两个方面,即从静(特性、特征)和动(用途、行为)来展开。所以我们可以总结为:对象指具体的事物,具有静态的特征和动态的行为或用途。
在Java语言中,在对对象进行描述时,其静态的特征称为属性,动态的行为或用途称为方法。
2、类
上面提到对象是具体的事物,那么,类就是对具体事物的一般特征进行描述。换句话说,类是具有相同属性和行为的一组对象的集合,类也有属性和行为。
对象是具体的一个实实在在的事物,类是从这些具体事物(对象)的原型。是这些事物一般特征的描述,是抽象出来的。
二、定义类和创建对象
1、类的声明
Java中类声明的格式如下:
[类修饰符] class 类名 [extends 父类名称] [implements 接口名称列表]
{
变量定义及初始化;
方法定义及方法体;
}
类修饰符:[public|abstract|final] 缺省方式为frindly
public:类的访问控制符。Java类具有两种访问访问修饰符:public和default。public允许类具有完全开放的可见性,所有其他类都可以访问它,省略public,则为default,即只有位于同一个包(本质上就是文件夹)中的类可以访问该类。
abstract指明该类为一个抽象类,说明该类是一个定义不完全的类,需要被继承,才能实例化创建对象。
final:表明该类为最终类,不能被继承。
extends:表示继承,如果没有指定继承关系,则自动从Object类派生该类。
implements:表示实现接口。
2、类的成员
类的成员包括属性(变量)和方法两个部分,定义格式如下:
成员变量:
[变量修饰符] 变量数据类型 变量名;
变量修饰符可以为public、protected、private、static、final、transient、volatile。
成员变量可以是Java的任意一种数据类型
成员方法:
[方法修饰符] 返回类型 方法名称(参数列表) [throws exception]
{
......
}
方法修饰符可以是public、protected、private、static、final、abstract、native、synchronized。
返回类型可以是Java任意数据类型,当一个方法不需要返回值时,返回类型为void。
参数的类型可以是Java任意数据类型,根据数据类型的不同采用值传递或引用传递。
3、创建对象
想要创建对象,我们首先要抽象出类,比如我们要创建一个箱子对象,我们应该首先抽象出箱子类,箱子具有长度、宽度、高度等属性,并且可以计算体积,所以我们可以这样定义这个类:
public class Box { private double length; private double width; private double height; public void setLength(double length) { this.length = length; } public void setWidth(double width) { this.width = width; } public void setHeight(double height) { this.height = height; } public double getLength() { return length; } public double getWidth() { return width; } public double getHeight() { return height; } public double getV() { return length * width * height; } }在这个类中,类名为Box,我们定义了三个属性,分别为长、宽、高,且属性的访问修饰为private,我们需要通过getter/setter方法对其进行读取/赋值,另外还有一个计算体积的方法。
要想创建新的对象,我们需要使用new关键字和想要创建对象的类名,如:
Box box = new Box();
等号左边以类名Box作为变量类型定义了一个变量box,来指向等号右边通过new关键字创建的一个Box类的实例对象,变量box就是对象的引用。注意:在new语句的类名后一定要加上(),Box()被称为构造方法,后面会进行讲解。
如果要访问对象中的属性或方法,可以使用.操作符,如:box.getV();