比喻
蒋介石和毛泽东分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性。
面向过程是蛋炒饭,面向对象是盖浇饭。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。
区别
编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。
**封装性:**都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。
面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显。
23、方法重载和方法重写(覆盖)的区别
| 英文 | 位置不同 | 作用不同 | 修饰符 | 返回值 | 方法名 | 参数 | 抛出异常 | |
| 重载 | overload | 同一个类中 | 在一个类里面为一种行为提供多种实现方式并提高可读性 | 无关 | 无关 | 相同 | 不同 | 无关 |
| 重写 | override | 子类和父类间 | 父类无法满足子类的要求,子类通过方法重写满足要求 | 大于等于 | 小于等于 | 相同 | 相同 | 小于等于 |
23、this和super关键字的作用
this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;this可以调用成员变量,不能调用局部变量;this也可以调用成员方法,但是在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一条语句。,而且在静态方法当中不允许出现this关键字。
super代表对当前对象的直接父类对象的引用,super可以调用直接父类的成员变量(注意权限修饰符的影响,比如不能访问private成员)
super可以调用直接父类的成员方法(注意权限修饰符的影响,比如不能访问private成员);super可以调用直接父类的构造方法,只限构造方法中使用,且必须是第一条语句。
24、static关键字的作用
static可以修饰变量、方法、代码块和内部类
static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。
static变量和非static变量的区别(都是成员变量,不是局部变量)
1、在内存中份数不同
不管有多少个对象,static变量只有1份。对于每个对象,实例变量都会有单独的一份
static变量是属于整个类的,也称为类变量。而非静态变量是属于对象的,也称为实例变量
2、在内存中存放的位置不同
3、访问的方式不同
实例变量:
- 对象名.变量名 stu1.name=“小明明”;
静态变量:
-
对象名.变量名 stu1.schoolName=“西二旗小学”; 不推荐如此使用
-
类名.变量名 Student.schoolName=“东三旗小学”; 推荐使用
4、在内存中分配空间的时间不同
Student.schoolName=“东三旗小学”;或者Stud
【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】 浏览器打开:qq.cn.hn/FTf 免费领取
ent stu1 = new Student(“小明”,“男”,20,98);



