面向对象的个人理解

面向对象的个人理解

1、面向过程和面向对象的区别?
1-1、什么是面向过程,面向对象?

     	面向过程是固化思维,他着重于解决问题的目的,围绕着目的开展一系列的解决过程,而展开的思维。
面向对象是开放性的思维,他不在局限于着手于目的去解决问题,而是将思维的中心放到了,在解决问题的过程中,会有哪些角色参与进来,这些角色有什么特点,关联,行为,属性。着重于参与事务,而不是单纯的解决问题。
将这些角色散发思维,建设完毕之后,再去思考问题的目的,解决问题的路劲就是将这些角色调动,组合起来。
想要达到不同的目的,就去找这些角色本身,而不仅仅局限于某个单一的目的去设计程序。

1-2、面向过程是如何过渡到面向对象的?

	 电脑硬件的不断发展,导致电脑不在是局限于科学计算,而是走入欠佳万户,各行各业。使用电脑编程也不局限于科学家,逐渐走向普通的程序员,为了解决从事未知领域编程,才有了面向对象思维。

1-3、在有了面向对象情况下,是否不需要面向过程了?
(面向过程是否被淘汰了?面向对象和面向过程谁好?)

 面向对象只是思考问题的角度不一样,但是不代表他可以完全替换面向过程。面向对象就像是写好了的功能,但是还是需要过程来调用这些功能实现问题的解决。

2、类与对象的概念,对象与类的区别与联系?

类是某一种事物,物体,东西,这一类的整体化,抽象化的描述,而对象就是被描述的,实际存在的东西。
在编程语言的角度去看类,类就是一个数据类型,和int,String,一样,是描述某个具体的,存在的变量,事物。
在编程语言的角度去看对象,就是一个变量,只不过这个变量里面保存的东西,比基本数据类型要大,要多。里面可以放很多个值数据,这个值可以是引用,也可以是基本数据类型,更可以是其他类的一个对象。都可以。

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

  //行为

}
附加知识点:类 java文件 class文件 三者在名称和个数上的关系?
java文件对应的类,是和他同名的且是公共访问的类,且只有一个
一个java文件里面可以u有很多个class文件,但公共类也只可以有一个,且 和java文件名同名

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

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

个人理解:在内存机制中,虚拟机要存放数据位置,只看你声明数据的地方在哪里,对象的属性或成员变量的类型,是放在堆中,局部变量放在栈中,两者的关键区别在于关键字new,其中这些位置的存放于这些数据本身的类型无关。
一旦某个引用变量被赋值,一旦虚拟机运行起来,且加载了类的时候,这个值就会被当成一个常量,存放到数据段中。声明的时候再引用给你

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

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

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

5、如何在一个问题域当中设计类、属性和方法呢?
5-1、首先在问题域当中寻找名词—对象应关注而产生

意思是说,与本问题无关的对象,不需要产生了

5-2、是不是找到的名词都是要自定义的类呢?
不是,判断是否有现成的数据类型就能够满足问题域对该
名词的要求;如果有,直接使用现成的数据类型;没有才
自定义类!

5-3、通过问题域判定,名词与名词之间的关联关系;
use – a, has – a
如果是has-a关系,那么把对方作为自己的一个属性;
其中use–a,是把对方作为自己某个函数的局部变量来使用,用完就销毁的那种
has—a是将对方作为自己内部成员的组成部分,是自己的属性,自己这个对象被销毁了,他才会被销毁
5-4、找动词,动词都是行为
5-5、把行为划分到它所属的类型当中去
5-6、合并考虑行为和use-a关系,决定哪些行为是需要绑定
另外一个类型的
5-7、最后再在main方法当中把他们产生、调用;

6、this是什么?什么时候用?

隐式对象,不用生命,自带的。一个关键字 在类的内部代表当前操作对象 可以理解为生活中的“我” 和普通变量做区分的时候可以用到this
在属性或方法过多时。this会出发联想功能,帮助我们快速找到想用的属性或方法。
在有属性重名时可以用this来区分一下

7、类名和类的限定名之间的关系与区别

类名是类的限定名的缩写,类的限定名才是虚拟机中真正记录的类名,除了包含类名之外,还包含了类前面的整个包路径作为整个类名。
如果在不同的包里面有相同的类名,那么import只能引入一个,另一个只可以用全类名来区分了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值