【Java】认识类和对象
一. 面向对象的介绍和理解
1. 面向对象的介绍
Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。
2. 面向对象的理解
利用生活中洗衣服的例子理解面向对象:
1).传统的洗衣服过程
在传统的洗衣服过程中,需要进行如下的环节,洗衣服的每一环节都需要亲力亲为,也就是说洗衣服的过程都需要我们自己去完成;而这就是面向过程了,
而且不同衣服洗的方式,时间长度,拧干方式都不同,处理起来就比较麻烦;如果将来要洗鞋子,那就是另一种放方式;再结合我们写代码来说,如果按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。
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 关键字用于创建一个对象的实例.
使用.来访问对象中的属性和方法.
同一个类可以创建对个实例
三. 类和对象的说明
类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员.
类是一种自定义的类型,可以用来定义变量.
一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
做个比方;类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。