1、面向过程和面向对象的区别?
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
1-1、什么是面向过程,面向对象?
面向过程,其实就是解决问题的一个过程。
而面向对象,是指某一个对象,它本身具有很多的功能以及属性,那么他的每一个功能其实现过程就是面向过程的实现,那么就像你说的可以进行这样的拆分,并且还要补充的就是面向对象他除了面向过程的一部分外,还有自己本身所拥有的属性,这样才完整构成了面向对象。
1-2、面向过程是如何过渡到面向对象的?
计算机的发展
1-3、在有了面向对象情况下,是否不需要面向过程了?
(面向过程是否被淘汰了?面向对象和面向过程谁好?)
需要
2、类与对象的概念,对象与类的区别与联系?
类是抽象的,对象是具体的。
3、类的定义语法,对象的产生语法,对象的使用语法
public class 类名{
//属性
//行为
}
附加知识点:类 java文件 class文件 三者在名称和个数上的关系?
Java类名:Java类名是我们在编写程序时给我们定义的对象取的名字。
java文件名:Java程序我们需要有个文件来保存,保存的文件后缀为.java,.java前的便是Java文件名。
class文件名:Java程序要查看结果便需要运行.class文件。.class前面的便是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.
this.只能调用到本类的属性和方法,所以可以在阅读代码的时候和普通局部变量做区分
在属性和方法过多的情况下,this.会触发IDE工具的属性。
7、类名和类的限定名之间的关系与区别
限定类名,就是类名全称,带包路径的用点隔开
类名也叫短名,不带包的,例如:String。
类名是相对于限定类名来说的,在Java中有很多类,不同的类之间会存在相同的函数或者方法,所以有时候就需要限定类名来调包。 而如果不存在相同的函数或者方法 ,就可以使用类名。