什么是类,什么是对象???
我相信这个问题是我们从面向过程语言(C)到面向对象对象语言(Java)最大的困惑了。
那么我们先解决这个问题。
什么是面向对象,什么是面向过程?
给大家展示一个简单的需求。打印一个一维数组,
要求是打印格式是【0,1,2,3,4,5,6,7,8,9】
那么面向过程该怎么编程呢???
//定义一个一维数组
int[] arr = new int[]{0,1,2,3,4,5,6,7,8,9};
System.out.print("[");
for(int i = 0 ; i < arr.length; i++){
if(i != arr.length-1)
System.out.print(arr[i]+",");
else
System.out.print(arr[i]+"]" );
}
System.out.println("");
结果
那么面向对象该如何去做?
int[] arr = new int[]{0,1,2,3,4,5,6,7,8,9};
System.out.print(Arrays.toString(arr));
通过以上两个输出结果相同的例子,我们来总结一下面向对象和面向过程的浅层概念。
面向对象:想完成一个功能,不管过程怎么样实现,不关心你的步骤如何,只要找到实现这个功能的人。
面向过程:想要完成一个功能,但是每一个过程都要亲力亲为。
这里例子中,面向对象语言中我们调用了Arrays类中的toString方法。一行代码就解决了我们的需求。
而面向过程中,我们需要先打印一个"[" 在for循环遍历打印,循环后补上"]"。我相信任何一个人都会选择第二种方式去完成这个需求。
那现在我们再来说一下类和对象的概念。
类
类在Java 中实际上是一个抽象的概念。
举个例子,人
人具有那些简单的属性特征?
身高(high)
体重(weight)
人具有那些简单行为呢?
走路(walk)
吃饭(eat)
以上就是我们抽象化的一个人的概念。在Java中,我们把这个类,取名为People类。
在Java中是怎么实现的呢?
public class People {
int higth; // 身高
int weight; //体重
void eat(){ // 吃饭行为
}
void walk(){ //走路行为
}
}
我们用 class 关键字去设置这个类的名字,在这个类中,我们用一些基础类型去定义它的属性。用方法去解释它的行为。
这就是一个简单的类。
对象
对象是建立在类的基础上,我们使用一个类需要去创建它,也就是(new),那么我们每创建一个类,就相当与创建了一个实体,而这个实体,就是我们所说的对象。
People p1 = new People();
p1既是这个对象的名字,也是这个对象的引用。
如果我们要访问这个对象的属性,或者方法,我们就可以用p1 + . 字符去访问。
(当然,我们在类中定义的属性及方法,并不应该让所有人拥有访问和修改的权利,在下一篇文章,我们就会讲到控制语句,与构造器。我们再去详细的谈)