java是一个纯粹的面向对象的语言?面向对象语言和面向对象编程
学完JVM感觉对java的理解更上了一层楼,也理解了为什么说java是一个纯粹的面向对象的语言,理解如下:
为什么说java是一个纯粹的面向对象的语言?
JVM 在创建对象的时候,实际上会创建两个对象:
一个是实例对象。
另一个是Class 对象。该 Class 对象在JVM内仅仅会装载一次,该类的静态方法和静态属性也一同装载,JVM使用该 Class 对象来创建具体的实例对象(如上面的对象)。
例如,在下面的 Java 语句中,将有两个对象被创建:
Student student = new Student();
一个是实例对象 student ;另一个则是 Class对象,我们可以通过 Student.class 引用到它;这个 Class 对象拥有所有的这个类定义的静态变量和静态方法,同时,如果我们访问通过 student对象来访问静态内容,会发现它其实指向的对象就是 Student.class 。(静态同步方法的锁 是.class对象 也可以来辅助理解!)
其实这也是可以解释基本数据类型也是对象的,我们来看一下官方对于class的解释:
Instances of the class Class represent classes and
interfaces in a running Java application. An enum is a kind of class and
an annotation is a kind of interface. Every array also belongs to a
class that is reflected as a Class object that is shared by all arrays
with the same element type and number of dimensions. The primitive Java
types (boolean, byte, char, short, int, long, float, and double), and
the keyword void are also represented as Class objects.
谷歌译文:
Class类的实例表示正在运行的Java应用程序的类和接口。像枚举是一种类和注解则是一种接口。每个数组也属于被反射作为由具有相同的元素类型和尺寸的数目的所有阵列共享一类对象的类。原始的Java类型(boolean,
byte, char, short, int, long, float, and double)和关键字void也表示为Class对象。
void也是对象?没错,api中就有的 所以说:基本类型是对象,但是不能对象访问语法。
面向过程编程和面向对象编程
首先要明确一点: 面向过程编程和面向对象编程都似乎一种思维方式,是编写代码解决实际问题的一种思想
这两者虽说是都是一种思维方式,但是却有很大的区别。**面向过程更倾向于做一件事情应该如何完成?**然后一步一步实现。而面向对象是,有一件事情需要完成,应该找谁来完成,关注的是做这件事情的对象,不关注实现的过程。这段话理解起来有点难,举个例子。面向对象就好比是公司的老板,面向过程是公司里的员工。有一份工作需要完成,员工关心的是怎么样才能完成,注重的是工作中的过程,同时员工也是工作的执行者。老板只需要把工作交给员工即可,老板不需要关心员工完成工作中的过程,只要结果。这里也可以得出一个结论,面向对象是依托于面向过程的。是员工完成了工作,也就是说老板是靠员工完成的工作。
在生活中,面向对象这种思维方式更符合现实生活中人们的的思维方式。面向对象有个优点:可以将复杂的问题简单化。 比如说,你在淘宝或者京东上买东西,当你下过订单以后,剩下的事情就不需要你操心了,会有客服等人帮你完成。而你只需要等着衣服送上门就好了。换成面向过程的话,那就是当你下过订单以后,需要把数据提交到后台,接下来再和商家确认,你需要去店里取货,然后还得带东西回到家。
本文地址:https://blog.csdn.net/weixin_45127611/article/details/108875052