一. 面向对象的介绍和理解
1. 面向对象的介绍
Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。
2. 面向对象的理解
利用生活中洗衣服的例子理解面向对象:
- 传统的洗衣服过程
在传统的洗衣服过程中,需要进行如下的环节,洗衣服的每一环节都需要亲力亲为,也就是说洗衣服的过程都需要我们自己去完成;而这就是面向过程了,
而且不同衣服洗的方式,时间长度,拧干方式都不同,处理起来就比较麻烦;如果将来要洗鞋子,那就是另一种放方式;再结合我们写代码来说,如果按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。
现代的洗衣服过程
在现代洗衣服的过程中,可以通过洗衣机去洗衣服,人把衣服和洗衣粉放入洗衣机中,启动开关即可;这里就是以面向对象方式来进行处理,不再关注洗衣服的过程 ;具体洗衣机是怎么来洗衣服,如何来甩干的,我们不用去关心 。
注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。
二. 类的定义和使用
1. 类是用来干什么的
面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。
上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知),但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java、C++语言等;
类是用来对一个实体( 对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。
2. 类的定义
下面以定义一个洗衣机为例:
class为定义类的关键字,WashMachine为类的名字,{ }中为类的主体。
类中包含的内容称为类的成员;属性(字段)主要是用来描述类的,称之为类的成员属性或者类成员变量;行为(方法)主要说明类具有哪些功能,称为类的成员方法。
采用Java语言将洗衣机类在计算机中定义完成,经过javac编译之后形成.class文件,在JVM的基础上计算机就可以识别了
class WashMachine{ //属性(字段)-》成员变量 public String brand; // 洗衣机的品牌 public String type; // 型号 public double weight; // 重量 public double lenght; // 长 public double weidth; // 宽 public double height; // 高 public String color; // 颜色 //行为(方法)-》成员方法 public void WashClothes(){ // 洗衣服 System.out.println("洗衣功能"); } public void dryClothes(){ // 脱水 System.out.println("脱水功能"); } public void SetTime(){ // 定时 System.out.println("定时功能"); } }
注意事项:
- 一个文件中可以有多个类,但一般一个文件当中只定义一个类
- main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
- public修饰的类必须要和文件名相同
3. 类的实例化
定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自带的内置类型,而类是用户自定义了一个新的类型 。
用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
定义一个狗类并将其实例化:
class Dog { //属性(字段)-》成员变量 public String name;//狗的姓名 public String color;//狗的颜色 //行为(方法)-》成员方法 public void barks() { System.out.println(name+"汪汪叫"); } public void wag() { System.out.println(name+"摇尾巴"); } } public class Test { public static void main(String[] args) { Dog dog1 = new Dog();//实例化(创建对象) //使用 . 访问对象成员 dog1.name = "小金"; dog1.color = "金色"; dog1.barks(); dog1.wag(); Dog dog2 = new Dog(); dog2.name = "小哈"; dog2.color = "灰白"; dog2.barks(); dog2.wag(); } }
执行结果:
注意事项:
- new 关键字用于创建一个对象的实例.
- 使用
.
来访问对象中的属性和方法. - 同一个类可以创建对个实例
三. 类和对象的说明
类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员.
类是一种自定义的类型,可以用来定义变量.
一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
做个比方;类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。