目录
3.2 图解RiceCooker riceCooker = new RiceCooker();
前言
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。下面就针对Java语言中的类和对象展开学习。
一、图解面向对象与面向过程
1.1 面向过程
面向过程(Procedure Oriented)是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。

传统做饭都要先生火,降锅中的水烧开,将米洗净放进桶中,水开之后将桶放进锅中将饭煮熟。在此期间我们还要不但往灶内放燃料,对火候要有所把握,中间少了那一个环节饭都会做不好。如果按照这种方式来写代码,这对于以后程序的扩展或维护都会有着不小的麻烦。
1.2 面向对象
Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。从人们的角度出发来设计程序,这会更符合人们对事物的认知,这对于程序的开发、维护会更加的友好。
当代做饭过程:
当代的做饭将洗净的米放进锅中,选择功能后就没有了。以面向对象的方式来处理,用户就不会关注做饭的过程,只需要开关即可,通过对象(人和电饭煲)之间的交互即可。
二、类的定义和使用
2.1 现实中的对象与实体
面向对象的程序设计只关注对象,而对象反映的是生活中的实体,比如上面的电饭煲。但是呢,计算机不是人,不会自动识别,所以需要编程人员告诉计算机什么是电饭煲。
上图左侧就是对电饭煲简单的描述,该过程称为对电饭煲对象(实体)进行抽象(对一个复杂事物的重新认知),但是 这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象(Java语言)的编程语言来进行描述。
2.2 认识类的定义
Java中的类是用来对一个对象(实体)进行细节的描述的,就拿电饭煲来说,队电饭煲的功能、大小等方面进行描述,然后计算机能够识别(计算中的识别:完成自定义的类后,经过javac编译之后形成.class文件,在JVM的基础上面识别。)
2.2.1 类的定义
Java中的类是用关键词class来定义的,而类中包含了成员方法(也叫做行为;描述电饭煲的功能)和成员变量(也叫做字段(属性);描述电饭煲的属性有哪些,比如价格,大小等等)。
代码如下:
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}
class RiceCooker{//命名采用大驼峰(首字母大写)
public String name; //姓名
public double price;//价格
public double weight;//重量
public void cook(){
System.out.println("功能是做饭!");
}
}
//电饭煲类在计算机中定义完成,经过javac编译之后形成.class文件,在JVM的基础上计算机就可以识别了。
类定义的注意事项:
🚀类名注意采用大驼峰定义,首字母大写
🚀成员前的public为访问限定符(后面会详解)🚀此处写的方法不带 static 关键字(被 static 修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的,后面会详解)🚀一般一个文件当中只定义一个类,方面使用。🚀 main方法所在的类一般要使用 public修饰🚀public修饰的类必须要和文件名相同
三、类的实例化
🚀上面我们自定义的电饭煲类就是在计算机中新定义的一种类型,就类似我们自定义的方法一样。我们可以使用这些自定义的类来定义实例(或者称为对象)。🚀用类这种类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
代码如下:
//为了方便观察,所以一个文件夹里定义了两个类
class RiceCooker{//命名采用大驼峰
public String name; //姓名
public double price;//价格
public double weight;//重量
public void cook(){
System.out.println(name +"功能是做饭!");
}
}
public class Test {
public static void main(String[] args) {
RiceCooker riceCooker1 = new RiceCooker();//一个类可以创建多个实例
RiceCooker riceCooker = new RiceCooker();//riceCooker是一个引用,存了new RiceCooker()的地址
riceCooker.name = "电饭煲";//使用.号来访问RiceCooker类中的成员变量
riceCooker.cook();//使用.号来访问RiceCooker类中的成员方法
System.out.println(riceCooker.name);//打印的是电饭煲,如果没有赋初值打印null
}
}
//输出结果
//电饭煲功能是做饭!
3.1 类和对象的说明
🚀类就好似汽车图纸模型,我们可以根据这个图纸造出小汽车,小汽车就是我们的对象;而多个类可以实例化多个对象就好似我们可以对造好的小汽车选择不同的喷漆或者造出不同品牌的汽车等等。(看下面图解)
🚀类是自定义的类型,可以根据实际定义需要的变量
🚀一个类可以实例化多个对象,实例化的对象,占用实际的物理空间,存储类的成员变量,而类的成员方法是在栈区上开辟栈帧(堆栈的缓存方式:栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收),由此可知一个方法引用了对象的时候,方法销毁时,对象不会马上销毁,编译器会判断是否还有人在引用这个对象后再做处理)。