类和对象可以说是在Java语言基础语法部分学习当中最为重要的一部分,之前一直在说Java是一门面向对象编程的语言,那要怎样理解什么是面向对象编程呢?面向对象和面向过程有什么区别,这篇文章都会说明白。
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人 们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。
要理解面向对象和面向过程,我们在这里使用一个较为浅显易懂的例子(洗衣服)来区分二者。
想一下在没有洗衣机的时代,人们是怎样洗衣服的?如果做一个流程图则为如下操作:
想一想如果此时我要洗的是鞋子,还能使用上述流程吗?显然是不能,不同的衣服使用的方式不一定相同的方式。
面向过程注重的就是完成的过程,中间不能缺少某一个环节,如果按照这样的方式写代码,那么在之后功能的拓展和维护起来就比较麻烦。
而在当下有了洗衣机的出现,洗衣服的过程就变得简单的多,只需要人把衣服放入洗衣机,洗衣液放进洗衣机,最后启动洗衣机就完成,我们不用关心衣服是怎样被洗的。可以发现传统方式和现代方式都完成了洗衣服这个任务,但是用洗衣机可以减少很多步骤,还可以节省很多时间。
注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。
面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要 开发人员告诉给计算机什么是洗衣机。(如:品牌、型号、功率、容量、重量等)对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知),但是 这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java语 言。
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干 啥),描述完成后计算机就可以识别了。在描述的过程就是一个实体(对象)抽象的过程,主要是描述到我们需要使用到的地方,对我们编程没有帮助的属性可以省略。
class ClassName{
field; //字段(属性)或者成员变量
method; //行为或者成员方法
}
class为定义类的关键字,ClassName为类的名字,{ } 中为类的主体。在一个 .java 文件当中至少要有一个公开类,即为 public 修饰的类。
类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类 具有哪些功能,称为类的成员方法。
如定义一个小狗类:
class PetDog{
//定义属性
public String name;
public String color;
public int age;
//定义属性/行为
public void barks(){
System.out.println(name + "汪汪叫");
}
public void wag(){
System.out.println(name + "摇尾巴");
}
}
注意事项
定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自 带的内置类型,而类是用户自定义了一个新的类型,比如上述的:PetDog类和Student类。它们都是类(一种新定 义的类型)有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)。
用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
注意事项
1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员.
2. 类是一种自定义的类型,可以用来定义变量.
3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量
4. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。
在类的使用时我们要先通过 new 关键字实例化一个对象,才能对类进行初始化,调用行为方法。
如上述的小狗类:
本次我们 先学习到这,下一篇文章我们将详细讨论类和对象的细节部分,如:构造方法、关键字等。