一、初步认识面向对象
1.1 什么是面向对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。
1.2 面向对象和面向过程
拿家中洗衣服为例,在自动洗衣机出现前,都是手洗衣服,要清楚每一步及接下来的过程,洗衣过程如图例
注重洗衣服过程,其中的环节都不能少,不同衣服洗的方法、时间长度、脱水方式不同,按照此方式写代码,将来扩展和维护就比较麻烦。而在自动洗衣机出现之后,人们就不需要再注意过程。只需将衣服向洗衣机里一放,倒入洗衣粉,调好模式(洗的方式,时间长短,脱水方式)最后启动即可。
在洗衣服过程中,总共有四个对象:人、衣服、洗衣粉、洗衣机,洗衣服过程:人将衣服放入洗衣机、倒入洗衣粉、启动洗衣机,洗衣机就能完成洗衣服过程并脱水。整个过程是人、衣服、洗衣粉、洗衣机四个对象之间交互完成,人不需要关心洗衣机具体是如何洗衣服,如何脱水的。
以面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。
注意:面向过程和面相对象不是一门语言,而是解决问题的方法,没有好坏之分,都有专门的应用场景。
二、类的定义和使用
面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉计算机什么是洗衣机,比如洗衣机的品牌、型号、尺寸、重量、洗涤功率、脱水功率、洗涤容量、脱水容量、洗涤模式、材质等,这些对洗衣机的描述就是对洗衣机对象(实体)进行抽象,但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java语言。
2.1 认识类
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来做什么),描述完成后计算机就可以识别了。
例如:洗衣机是一个品牌,可以看成一个类
属性:品牌、型号、重量、尺寸、颜色等
功能:洗衣、定时、脱水等
2.2 定义类的格式
在java中用class关键字定义类。
//创建类 class ClassName{ field; //属性或者字段或者成员变量 method; //功能或者行为或者成员方法 }
例如:对洗衣机类进行定义
class WashMechine{ //成员变量 public String brand;//品牌 public String type;//型号 public String color;//颜色 public double length;//长 public double width;//宽 public double height;//高 //方法 public void Washclothes(){ ystem.out.println("洗衣服功能"); } public void Dryclothes(){ System.out.println("脱水功能"); } public void Settime(){ System.out.println("定时功能"); } }
注意:类名采用大驼峰定义,成员前都为public写法,方法不带static关键字。
2.3 练习
1.定义一个狗的类
class Doge { //属性或成员变量 public String name;//名字 public String color;//颜色 //方法 //喊叫 public void barks(){ System.out.println(name+":汪汪汪~~~"); } //摇尾巴 public void wag(){ System.out.println(name+":摇尾巴~~~"); }
2.定义一个学生类
class Students{ //属性或成员变量 public String id;//学号 public String name;//姓名 public String sex;//性别 public int age;//年龄 public String address;//住址 //方法 //上课 public void Doclass(){ System.out.println("按时上课,不能迟到,如果请假,请及时补课"); } //写作业 public void Dohomework(){ System.out.println("在教务系统查看并完成作业,不能不写"); } //考试 public void Exam(){ System.out.println("考试的科目、时间、地点、座号"); } }
注意:一般一个文件当中只定义一个类;main方法所在的类一般要使用public修饰, Eclipse默认会在public修饰的类中找main方法;public修饰的类必须要和文件名相同;不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改。