《面向对象程序设计》课程题库_理论
- 格式:docx
- 大小:78.55 KB
- 文档页数:19
Java 基础回顾
说明
Java和面向对象本身包罗万象,我们回顾的重点是基础知识。
以下是问题和参考答案,完全对很难,发现一个“原则上的”错误,期末加2分。
1、面向对象的特征有哪些方面?
答:面向对象的特征主要有以下几个方面:
- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。
- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B 系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
2、访问修饰符public,private,protected,以及不写(默认)时的区别?
答:
3、String 是最基本的数据类型吗?
答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
4、java中类的属性和方法是什么?
答:你可以把类比作一类事物,比如人类就是一个大类,而一个具体的人,比如小明,就是人类里面的一个对象。这个对象有眼睛、鼻子、耳朵这些器官,这些被称为对象的属性。这个人会跑,会跳会吃饭,这是人的动作,被称为对象的方法
5、属性和方法是类的两个重要的组成部分,请具体说明属性和方法,并举例。
属性和方法是类的两个重要的组成部分,其中,属性提供灵活的机制来读取,编写或计算私有字段的值,而方法则以一部分代码构成代码块的形式存在,用来实现一部分特定的功能。
你可以把类比作一类事物,比如人类就是一个大类,而一个具体的人,比如小明,就是人类里面的一个对象。这个对象有眼睛、鼻子、耳朵这些器官,这些被称为对象的属性。这个人会跑,会跳会吃饭,这是人的动作,被称为对象的方法。
具体而言,
属性是一种用于访问对象或类的特性的成员。属性可以包括字符串的长度、字体的大小、窗体的标题和客户的名称。
方法是一种用于实现可以由对象或类执行的计算或操作的成员。方法在类或结构中声明,声明时需指定访问级别、返回值、方法名称及方法参数,方法参数放在括号中,并用逗号隔开。括号中没有内容表明方法没有参数。
举例:
class People{
//属性
private String name; //名字
private String sex; //性别
//方法
public void eat(Food food){
//吃food 是食物类
}
}
6、int 和Integer 哪个会占用更多的内存?
答:
Integer 对象会占用更多的内存。Integer 是一个对象,需要存储对象的元数据。但是 int 是一个原始类型的数据,所以占用的空间更少。
7、什么是开发平台?
答:
在软件开发的过程中,我们需要很多的工具来辅助我们的工作,不可能什么都从头自己做。
我们把编程的环境和相应的辅助工具统称为开发环境,开发平台就是用来提供这个开发环境的。比如,车床工人需要一个车床才能工作一样。
同样,Java 是一种开发平台
Java 不单纯是一个编程的语言,它自身提供了一系列开发 Java 所需要的环境和工具,
来进行编译、解释、文档生成、打包等。
8、浅析JDK,JRE与JVM的含义和联系。
答:
JDK(Java Development Kit)是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JRE(Java Runtime Environment)是指Java的运行环境,是面向Java程序的使用者,而不是开发者。
JVM(Java Virtual Machine)是java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java 程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
如果安装了JDK,会发现你的电脑有两套JRE,一套位于Java\jdk\jre ,另外一套位于 Java\jre目录下,后面这套比前面那套少了Server端的Java虚拟机。jdk的bin下有各种java程序需要用到的命令,与jre 下的bin目录最明显的区别就是jdk下才有javac,这一点很好理解,因为jre只是一个运行环境而已,与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvm和server性质的jvm,而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了。
JRE的地位就像一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行Java程序的功能。所以我们可以说,只要你的电脑安装了JRE,就可以正确运行Java应用程序。
9、举例说明如何定义和使用一个类,核心代码需注释含义。
public class Puppy{
int puppyAge;
public Puppy(String name){
// 这个构造器仅有一个参数:name