Java面向对象理论知识理解

1、面向过程和面向对象的区别?
1-1、什么是面向过程,面向对象?
面向过程简单来说就是分析问题,梳理出一条执行流程,然后按流程编写函数执行完毕并达到目的;而面向对象则是先分析整个问题,分离出各个对象,然后用类来描述对象身上的属性和行为,属性就是指对象身上的值数据,行为则是对象要做什么或我们要对它做什么。
1-2、面向过程是如何过渡到面向对象的?
问题的处理从单一流程执行到多面情况,程序员需要处理各种不同情况的问题,无法快速准确分析出一条单一执行流程,从而只能分析对象,采用面向对象的方法来解决问题
1-3、在有了面向对象情况下,是否不需要面向过程了?
(面向过程是否被淘汰了?面向对象和面向过程谁好?)
当然不是,面向对象与面向过程还是一直并行的。我们在面向对象分析后,虽然将每个属性和行为已经编写好,但是最终实现的时候还是需要采用面向过程的方法来执行主函数来达成目的。所以说并没有谁好谁坏的区别,还要看具体的使用环境。

2、类与对象的概念,对象与类的区别与联系?
· 类是对对象的抽象,在类身上定义该类的对象有哪些属性和行为,是一个抽象的模板,是一种自定义的数据类型。
对象是具体的实际的存在,对象是通过类来产生的(过程被称之为实例化),具体在问题域中的使用
总结:类是具有相同属性和行为的一组对象的集合

3、类的定义语法,对象的产生语法,对象的使用语法
public class 类名{
//属性

  //行为

}
附加知识点:类 java文件 class文件 三者在名称和个数上的关系?
一篇Java文件可以写多个类,但是公共类只能有一个,因为公共类的名字跟Java文件名要保持一致,所以最好是一个Java文件一个类;而class文件是每个类被编译后形成的一篇独立的class文件,class文件名就是类名,所以一篇Java文件有多少个类就有多少个class文件。

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

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

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

4、销毁对象 ---- 垃圾回收机制(GC)
垃圾回收是独立的运行机制,由自身算法去控制回收;
唯一的代码System.gc(), 效果是啥?
—召唤垃圾回收机制进行回收动作,但是回不回收,什么时候回收,回收哪些都由GC自己决定,它只保证调用完该方法以后它已经尽最大能力完成回收。
最基本的回收算法是啥?
—当一个对象没有引用指向的时候

补充知识点: 匿名对象 只能使用1次
语法:new +类名(参数列表);
只会调用一次,使用完就会被回收

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其实是一个隐式对象,所谓隐式就是说:这个对象不用显式声明,在类内部自带,直接使用,所以是关键字。它的含义是在类的内部代表当前操作对象,可以简单的理解为在生活中的“”这个词 的概念。使用好处有2:
1)、this.只能调用到本类 的属性和方法,所以可以在阅读代码的时候和普通局部变量做区分;
2)、在属性和方法过多的情况下,this.会触发 IDE工具的联想功能,帮助我们快速找到要操作的属性或调用的方法。

补充:当在一个方法当中,局部变量和属性变量出现了重名的情况,那么根据就近原则JVM会认为这个名字代表的是该方法中的局部变量名,所以需要给前面的属性变量名加this指明。

7、类名和类的限定名之间的关系与区别
类的限定名其实是类名的全名称包含类名加上类所属包在src的路径。
区别在于我们使用import指令调用类后,就不用再写类的全类名即类的限定名。
好处是减少输入,但是实际Java在翻译成class文件的时候还是会自动补全调用的类名,会在该类名前加上包的路径。
如:java.util.Date

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值