面向过程和面向对象

本文探讨了面向过程和面向对象的区别,解释了面向过程编程的步骤和面向对象编程的封装、继承和多态特性。同时阐述了类与对象的概念,强调两者在解决问题上的不同侧重点,并介绍了类的定义、对象的创建与使用。此外,文章还涉及内存管理、垃圾回收机制以及如何在问题域中设计类、属性和方法。

1、面向过程和面向对象的区别?
1-1、什么是面向过程,面向对象?
面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。
面向过程编程,数据和对数据的操作是分离的,函数本身只处理数据,并没有储存的功能
按照这样的思路设计的程序,当一个公共变量同时被多个函数操作的时候,很有可能因为一个函数的出错而导致整个程序的出错。
1-2、面向过程是如何过渡到面向对象的?
面向对象是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向对象编程,数据和对数据的操作是绑定在一起的,数据可以存储在对象中
面向对象的特点是:封装、继承、多态
为了尽可能的做到代码复用,使用封装隐藏实现细节,使得代码模块化,使用继承可以扩展已存在的类;
而为了实现接口复用,使用多态来使用基类的衍生方法
1-3、在有了面向对象情况下,是否不需要面向过程了?
(面向过程是否被淘汰了?面向对象和面向过程谁好?)
面向过程就是把问题拆分为多个步骤,按步骤实现程序功能,而面向对象就是把问题的解决步骤描述为对象的行为;
面向过程数据是被所有函数共享的,面向对象数据可以是私有的,只被对象里的函数使用;
我认为两者是各显神通的
2、类与对象的概念,对象与类的区别与联系?
一个类可以包含很多个对象,对象一定是在一个类当中的;
类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
对象是类的一个具体。它是一个实实在在存在的东西。

3、类的定义语法,对象的产生语法,对象的使用语法
public class 类名{
//属性
//行为
}
附加知识点:类 java文件 class文件 三者在名称和个数上的关系?
.java文件是源文件,通过javac命令编译后生成.class文件;.class文件是字节码文件,即.java文
件编译后的代码。
.class文件全名称为Java class文件,主要在平台无关性和网络移动性方面使Java更适合网络。

类名 对象名 = new 类名();
附加知识点:
1、类是一种数据类型,而且是引用数据类型;
2、内存的划分,以及各种变量在内存中的存放位置 和 结构

内存划分情况说明:
内存会被划分为4个区域:代码段、数据段、栈区、堆区;
在加载期,代码(特别是方法)会被加载放入到代码段,每个
方法只放一次;
在加载期,凡事代码中的常量会被放入到数据段(以后还会有细节);
运行期,局部变量会被放入栈区,而new出来的对象(当然也包括
对象身上的属性)会被放入到堆区。
可以看到放入的内存位置跟数据类型是无关的。
数据类型控制的是变量存放值的方式而不是位置。基本数据类型变量
所在的内存放的就是数据值本身,引用数据类型变量的所在内存中存
放的是数据的引用,值(对象)在其他地方。

对象使用 "."操作 访问属性或者方法
附加了访问修饰符(三个关键字,4种情况)
public — 公共的
默认不写 — 同包的
private — 私有的
没有讲完有待于进一步的补充。

4、销毁对象 ---- 垃圾回收机制(GC)
垃圾回收是独立的运行机制,有自身算法去控制回收;
唯一的代码System.gc(), 效果是啥?
最基本的回收算法是啥?—当一个对象没有引用指向的时候

补充知识点: 匿名对象 只能使用1次

5、如何在一个问题域当中设计类、属性和方法呢?
5-1、首先在问题域当中寻找名词—对象应关注而产生
5-2、是不是找到的名词都是要自定义的类呢?
不是,判断是否有现成的数据类型就能够满足问题域对该
名词的要求;如果有,直接使用现成的数据类型;没有才
自定义类!
5-3、通过问题域判定,名词与名词之间的关联关系;
use – a, has – a
如果是has-a关系,那么把对方作为自己的一个属性;
5-4、找动词,动词都是行为
5-5、把行为划分到它所属的类型当中去
5-6、合并考虑行为和use-a关系,决定哪些行为是需要绑定
另外一个类型的
5-7、最后再在main方法当中把他们产生、调用;

6、this是什么?什么时候用?
this可以理解为 “我”
当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的。

7、类名和类的限定名之间的关系与区别
限定类名,就是类名全称,带包路径的用点隔开,例如: java.lang.String。
非限定(non-qualified)类名也叫短名,就是我们平时说的类名,不带包的,例如:String。
非限定类名是相对于限定类名来说的,在Java中有很多类,不同的类之间会存在相同的函数或者方法,所以有时候就需要限定类名来调包。 而如果不存在相同的函数或者方法 ,就可以使用非限定(non-qualified)类名。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值