- 什么是面向过程
面向过程是解决问题的一种思想,在我们解决问题时,按照预先设定的想法和步骤,一步一步去实现,而具体的每一步都需要我们去实现和操作,这些步骤相互调用和协作,完成我们的需要。
面向过程,其实就是面向着具体的每一个步骤和过程,就是面对具体的每一个功能函数,这些功能函数互相调用,完成需求。
例如:买电脑这个过程
- 什么是面向对象
当面向封装了具体功能类,若要使用这个类,一般情况下,在Java中需要通过创建这个类的实体来使用。这个实体称之为对象。在开发中,我们是在不断的找封装不同功能的类。基于这些类,创建其对象,使用这些对象完成相应的操作。
面向对象是基于面向过程,对象是将功能进行了封装。只要找到了具体的类,创建出对象,就可以调用其中的具体功能。面向对象也是用来解决问题的一种思维模式。 - 面向过程和面向对象之间是否是互斥的?
不是互斥的,面向过程是最基本的思想,面向对象是面向过程之上的一种优化方式。 - 对象与类
对象:真实存在的事物都叫做对象
用关键字new来建立对象
类:具有相同特征和行为的事物的统称
对象与类的关系:对象是由类所描述出来的具体的事物
对象与类的区别:
类是用于描述现实事物的,它将现实事物进行抽象化,模板化描述。将事物的特点和行为封装在其中。
对象是显示生活中存在的具体的实例。 - 如何定义一个类。
类是用于描述现实事物的,它将现实事物进行抽象化,模板化描述。将事物的特点(属性)和行为封装在其中。new 类名 (); //按照类所描述的内容创建一个具体的对象出来
主函数是不需要创建对象的,可以直接调用的(由JVM) - 静态不能直接调用非静态
非静态可以调用静态
main 程序主要且唯一入口
一般而言 把主函数所在的类称之为 主类
主类:主要负责程序的运行
工具类:一般不会创建对象,直接通过类调用函数(静态)
实体类:主要负责描述事物
直接定义在类中的变量,我们称之为成员变量
直接定义在类中的函数,我们称之为成员函数(没有static)
一个.java文件中最多只有一个public
- 私有private关键字
类中不需要对外提供的内容都私有化,包括属性和行为
以后在描述事物,属性都私有化,并提供setXxx getXxx方法对其经行访问
私有化只是让外界不能修改,而不是不能访问
- this关键字
this:表示当前对象的引用
成员变量的个数和对象的个数有关
成员函数的个数和对象的个数无关,始终一个
图列说明:
a .先执行main方法,main方法压栈,执行其中的new Person(“张三”,23);
b.堆内存中开辟空间,并为其分配内存地址0x33,紧接着成员变量默认初始化 (name=null age = 0);
c.拥有两个参数的构造函数(Person(String nm , int a))压栈,在这个构造函数中 有一个隐式的this,因为构造函数是给对象初始化的,那个对象调用到这个构造函数, this就指向堆中的那个构造函数。
d. 由于Person(String nm , int a)构造函数中使用了this(nm); 构造函数Person(String nm)就会压栈,并将“张三”传递给nm。在Person(String nm )构造 函数中同样也有隐式的this,this的值同样也为0x33,这时会执行其中name = nm,即 把“张三”赋值给成员的name。当赋值结束后Person(String nm )构造函数弹栈。
e. 程序继续执行构造函数(Person(String nm , int a)中的age = a;这时会将23赋 值给成员属性age。赋值结束构造函数(Person(String nm , int a)弹栈。
f. 当构造函数Person(String nm , int a)弹栈结束后,Person对象在内存中创建完 成,并将0x33赋值给main方法中的p引用变量