第四章 类和对象

来源:互联网 发布:php文件上传目录 编辑:程序博客网 时间:2024/06/05 05:15

回顾时,看问题,思考问题,想不起了,说明还没有真正理解其含义!此时需要再看再理解再记忆!
问题导航:
1、编程语言经历了哪几个发展阶段?
2、面向机器语言有什么缺点?
3、为什么用机器语言进行程序设计需要针对不同的计算机分别编写指令?
4、低级语言指哪2种语言?
5、什么叫汇编语言?
6、什么叫面向过程编程?面向过程语言的核心是什么?面向过程语言的优点是什么?什么叫源文件?
7、面向对象语言最核心的内容是什么?它的核心思想是什么?面向对象编程的特点(特性)是什么?
8、什么叫继承?继承有什么好处?
9、什么叫多态?有哪两种意义的多态?
10、什么叫类?它的源文件是由什么组成的?扩展名是什么样的?
11、类的定义包含哪2个部分?给类命名,应该遵守什么样的编程风格?
12、类体有哪2部分构成?分别是什么样的?
13、什么叫做对象?什么叫构造方法?
14、什么叫封装?有什么好处?
15、抽象和封装的不同点?
解决问题:

1、编程语言经历了哪几个发展阶段?
答:面向机器语言阶段、面向过程语言阶段、面向对象语言阶段。

2、面向机器语言有什么缺点?或为什么所用机器语言进行程序设计是十分累人的工作?
答:用机器语言进行程序设计,不仅代码难以阅读和理解,而且就算是只做一个简单的任务也需要编写大量的代码,并且同样的任务,还需要针对不同型号的计算机分别编写指令。

3、为什么用机器语言进行程序设计需要针对不同的计算机分别编写指令?
答:因为每种计算机都有自己独特的机器指令,如一种型号的计算机用10001010表示加法指令,而另一种计算机用11110000来表示加法指令。这些指令的执行由计算机的线路来保证,计算机在设计之前,就要事先确定好每一条指令对应线路的逻辑操作。使用机器语言编程也称为面向机器编程。

4、低级语言指哪2种语言?
答:机器语言和汇编语言。

5、什么叫汇编语言?
答:在编写指令时,可以用一下简单的容易记忆的符号来代替二进制指令。但汇编语言仍然是面向机器的语言,仍然需要针对不同的机器来编写不同的代码。

6、什么叫面向过程编程?面向过程语言的核心是什么?面向过程语言的优点是什么?什么叫源文件?
答:
(1)使用面向过程语言编程也称为面向过程编程。语言把代码组成叫做过程或函数的块,每个块的模板就是完成某个任务。
(2)面向过程语言的核心是编写解决某个问题的代码块。
(3)优点:使用面向过程语言编写代码指令,不必再去考虑机器指令的细节,只要按着具体语言的语法要求去编写源文件。
(4)源文件:按着编程语言的语法编写具有一定扩展名的文本文件。如c语言编写的源文件的扩展名为.c。

7、面向对象语言最核心的内容是什么?它的核心思想是什么?面向对象编程的特点(特性)是什么?
答:
(1)最核心的内容:是对象,一切围绕对象。
(2)核心思想之一:将数据和对数据的操作封装在一起。通过抽象,从具体的实例中抽取共同的性质形成一般的概念。如类的概念。
(3)特点是:封装性、继承、多态。

8、什么叫继承?
答:继承是一种先进的编程模式,子类可以继承父类的属性和行为,同时也可以增加自己独有的属性和行为。
继承的好处:
(1):继承是传递的,容易在其基础上构造,建立和扩充出新的类。
(2):简化了人们对事物的认识和描述,能清晰体现相关类之间的层次结构关系。
(3):能减少数据和代码的冗余度。
(4):大大增加了代码的维护性。

9、什么叫多态?有哪两种意义的多态?
答:
我的理解是,同一种方法,不同的行为(或结果)。如踢球这个行为或者说成方法,每个球员都使用踢这个方法,但是结果却又踢进和踢不进。
类型:操作多态和与继承有关的多态;
操作多态:多个操作具有相同的名字,但这些操作所接收的消息必须是不同的。也就说可以向操作传递不同消息,以便让对象根据相应的消息来产生相应的行为。可简单记成操作名相同,参数不同!
继承有关的多态:指同一个操作被不同类型对象调用时可能会产生不同的行为。可简单记同一种方法,不同的行为!

10、什么叫类?类的目的什么?它的源文件是由什么组成的?扩展名是什么样的?
答:
定义:类是创建对象的模板,它包含被创建的对象的状态描述和行为的定义;类把数据和数据的操作封装成一个整体。
类的目的:抽象出一类事物共有的属性和行为,并用一定的语法格式来描述所抽象出的属性和行为。
抽象的关键:是抓住事物的2个方面,属性和行为。即数据和对数据的操作。
源文件:由若干个类组成。它的扩展名为.java的文本文件。

11、类的定义包含哪2个部分?给类命名,应该遵守什么样的编程风格?
答:
组成:类声明和类体;
具体:class 类名是类的声明部分,2个大括号之间的内容是类体。
风格:
若类名使用拉丁字母,则名字的首字母要大写。如Hello等;
类名容易识别、见名知意。
类名由多个单词复合而成,每个单词的首字母大写。如ChinaMade

12、类体有哪2部分构成?分别是什么样的?
答:
变量的声明:用了存储属性的值;
变量分类:成员变量和域变量;
成员变量:成员变量的类型可以是java中的任何数据类型。
java中的数据类型:基本类型:整型、浮点型、字符型、逻辑类型;引用类型:数组、对象、接口。
成员变量的有效范围:整个类里面都有效。它的有效性与它在类体中书写的先后位置无关。编写代码时,先属性后行为;
编程风格:
(1)一行只写一个变量;
(2)变量的名字除了符合标识符规定外,变量名字的首单词的首字母要小写,若变量名字由多个单词组成,从第二个单词开始,其他单词的首字母都要大写。
(3)变量名字见名知意;
方法的定义:对类中声明的变量进行操作。
方法的组成:方法头和方法体;
局部变量:在方法体中声明的变量和方法的参数叫做局部变量。
局部变量的有效范围:只在方法内有效,与其声明的位置无关。方法的参数在整个方法内有效。方法内的局部变量从声明的位置之后开始有效。
方法隐藏成员变量:若方法中局部变量的名字和成员变量的名字相同,则成员变量被隐藏。也就是说这个成员变量在这个方法内暂时失效。但如果想要在这个方法中使用被隐藏的成员变量,必须使用关键字this。
局部变量和成员变量的区别:局部变量没有默认值,成员变量有默认值。也可以在声明成员变量的同时就赋予初值。但是局部变量在使用之前,必须要保证局部变量由具体的值。
注意:对成员变量的操作只能放在方法中,方法使用各种语句对成员变量和方法体中声明的局部变量进行操作。

13、什么叫做对象?什么叫构造方法?
对象:用类声明的变量叫做对象;
创建对象(类的实例):为声明的对象分配它所拥有的变量。确定对象具有的属性。
构造方法:
当类创建对象时,需使用类的构造方法;
构造方法名和类名相同,且无返回值类型。
一个类可以有多个构造方法,但必须保证参数不同(参数的个数不同或者参数个数相同,但参数列表中某个参数的类型不同)。此时,系统不再提供默认的构造方法。
如果类中没有编写构造方法,系统会默认该类只有一个无参的构造方法。

创建对象包括:对象的声明和为对象分配变量2个步骤。
为对象分配变量:使用new运算符和类的构造方法为声明的对象分配变量,即创建对象。若类中没有构造方法,系统会调用默认的构造方法。

对象的内存模型是什么样的?
空对象:声明了一个对象时,这个对象的内存中是没有任何数据的。

为什么空对象不能被引用?
因为对象没有得到任何实体。需要为这个空对象分配变量之后它才能被引用。

当类创建对象的时候,会要做哪2件事?即过程是怎么样的?
答:
(1)首先会为类中的每个成员变量分配内存,然后执行构造方法中的语句。
如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成员变量进行初始化操作,则对于整型,默认为0;浮点型默认为0.0;boolean型默认为false;引用型,默认为null;
(2)给出一个信息,以确保这些变量是属于对象的。将这些内存单元交给对象来管理。new运算符在为变量分配内存之后,返回一个引用给对象,也就是返回一个“号码”给对象。这个“号码”包含着代表这些成员变量的内存位置以及相关的重要信息。
(3)创建多个不同的对象,这些对象都会被分配不同的内存空间,因此改变其中一个对象的状态不会影响其他对象的状态。

抽象目的:产生类;
类的目的:创建具有属性和行为的对象;
对象的责任:负责存放引用,以确保对象可以操作分配给对象的变量以及调用类中的方法。

14、什么叫封装?有什么好处?
封装的概念:把对象的属性和方法结合成一个独立的整体,隐藏实现细节,并提供对外访问的接口。
封装的好处:
(1):隐藏实现细节。好比你买了台电视机,你只需要怎么使用,并不用了解其实现原理。
(2):安全性。比如你在程序中私有化了age属性,并提供了对外的get和set方法,当外界 使用set方法为属性设值的时候 你可以在set方法里面做个if判断,把值设值在0-80岁,那样他就不能随意赋值了。
(3):增加代码的复用性。好比在工具类中封装的各种方法,你可以在任意地方重复调用,而不用再每处都去实现其细节。
(4):模块化。封装分为属性封装,方法封装,类封装,插件封装,模块封装,系统封装等等。有利于程序的协助分工,互不干扰,方便了模块之间的相互组合与分解,也有利于代码的调试 和维护。比如人体由各个器官所组成,如果有个器官出现问题,你只要去对这个器官进行医治就行了。
15、抽象和封装的不同点?
答:
抽象和封装是互补的概念。
抽象关注的是对象的行为;
封装关注的是行为的细节;一般可以通过隐藏对象内部状态信息做到封装。封装可以看成是用来提供抽象的一种策略。