导航菜单
首页 >  面向对象程序设计期末考试题  > Java期末 简答题(论述题)以及几个编程题(常考)

Java期末 简答题(论述题)以及几个编程题(常考)

推荐这个阿里P7大佬的课 https://www.bilibili.com/video/BV19X4y1M7RH/?spm_id_from=333.999.0.0

继承性总结:

在这里插入图片描述 在这里插入图片描述

请举例简要说明JAVA语言的继承机制?

1Java继承的关键字:extends 2优势: • 提高了代码的复用性; • 提高了代码的维护性; • 建立了类与类之间的关系,这个是多态的前提。 3缺点:1.耦合性太大 2.就是破坏了类的封装性 4特点: 1 java中,继承是单继承 2java在创建一个对象的时候首先会去调用父类的不带参数的默认的构造方法,就是为了创建父类对象 ,然后再去调用子类的构造方法。 3子类可以使用父类中的成员变量和方法,然后也可以添加自己的属性和方法。

抽象类和接口的异同:

同: 1接口和抽象类都不可以被实例化 2都拥有需要被实现的抽象方法 异: 1抽象类使用abstract修饰接口使用interface修饰; 2一个类只能继承一个类,但是可以实现多个接口 3接口中方法均为抽象方法;抽象类可以含有抽象方法,也可以不包含抽象方法 4抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量 5抽象类中的成员可以是private、default(即不写访问修饰符)、protected、public的,而接口中的成员全都是public的 抽象类: 1、抽象类使用abstract修饰; 2、抽象类不能实例化,即不能使用new关键字来实例化对象; 3、含有抽象方法(使用abstract关键字修饰的方法)的类是抽象类,必须使用abstract关键字修饰; 4、抽象类可以含有抽象方法,也可以不包含抽象方法,抽象类中可以有具体的方法; 5、如果一个子类实现了父类(抽象类)的所有抽象方法,那么该子类可以不必是抽象类,否则就是抽象类; 6、抽象类中的抽象方法只有方法体,没有具体实现; 接口: 1、接口使用interface修饰; 2、接口不能被实例化; 3、一个类只能继承一个类,但是可以实现多个接口; 4、接口中方法均为抽象方法; 5、接口中不能包含实例域或静态方法(静态方法必须实现,接口中方法是抽象方法,不能实现);

面向对象的三大特征。

1.封装+ “通过 private、default 、protected、 public 关键字实现属性或方法的封装, 仅对外提供公共访问方式。+ “高内聚,低耦合”4

封装的好处**?

1实现数据项和方法的隐藏 2实现隐藏隔离,允许外部对类做有限的访问,开发者可以自由的改变类的内部实现 3提高了代码的重用性 **

2继承 一通过 extends。 两个好处: + 1.代码重用。了, 2. 通过继承 实现对现实世界更加准确的建模+

3多态: -一个对象变量可以指向多种实际类型对象的现象被称为“多态” 三个必要条件:继承、方法的重写、父类弓|用指向子类对象 多态的好处: 提高了代码的维护性(继承保证);提高了代码的扩展性 Java中多态的实现方式:接口实现,继承父类进行方法重写,同- -个类中进行方法重载。父类弓|用指向子类对象

栈 :

1.存放局部变量+ 2.不可以被多个线程共享。 3.空间连续, 速度快+ 4存放于二级缓存中

堆:

1.存放对象。 2.可以被多个 线程共享4 3.空间不连续,速度慢。但是灵活 4 使用的是一级缓存

定义多线程的方式:

Extends Thread← Implements Runnable←

多线程的状态: 新建就绪状态  运行状态  阻塞状态 死亡

内部类

在这里插入图片描述

构造函数与普通函数的区别

1) 格式不同: 构造函数不存在返回类型,函数名与所在类的类名一致; 普通函数有返回类型,函数名可以根据需求进行命名。 2)调用时期不同 构造函数在类的对象创建时就运行; 普通函数在对象调用时才会执行。 3)执行次数不同 一个对象创建后,其构造函数只执行一次,就是创建时执行; 一个对象创建后,其普通函数可以执行多次,取决于对象的调用次数。

正则表达式:

在这里插入图片描述 在这里插入图片描述

Swing基本组件: 在这里插入图片描述

Swing布局: 在这里插入图片描述

事件处理的三要素:

在这里插入图片描述

请举例简要说明JAVA语言使用事件监听器进行事件处理的过程

。 1 首先事件监听器(包含真正处理事件的代码)向事件源(与事件关联的控件,如按钮、滚动 条)注册, 2事件(敲击键盘,或点击鼠标)发生时,事件源向事件监听器发送一-个事件对象 (如果在该事件源上注册了多个事件监听器,则向所有的监听器发送) 3监听器对象随后会根据事件对象内的相应方法响应这个事件 四种实现方式: 自身类作为事件监听器 : 外部类作为事件监听器 : 内部类作为事件监听器: 匿名内部类作为事件监听器 事件添加方法:

2 .添加事件方法

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

C++ JAVA区别:

不同: 在这里插入图片描述

同: 都使用了面向对象的思想(例如封装,继承,多态等),并且两者具有很好的可重用性。

JAVA语言有哪些特点:

(1)简单的 Java摒弃了C++中容易引发程序错误的一些特性,如指针、结构、枚举以及内存管理等。 Java提供了丰富的类库,可以帮助我们很方便的开发Java程序。 (2)面向对象的 面向对象可以说是Java最重要的特性,所以它支持继承、重载、多态等面向对象的特性。Java 语言的设计是完全面向对象的 (3)健壮的 Java致力于检查程序在编译和运行时的错误。Java自己负责内存管理, 提供了垃圾内存回收机制,有效的避免了C++中最头疼的内存泄漏问题。 (4)安全的 Java的安全性可从两个方面得到保证。一方面,在Java语言里,删除了指针和释放内存等 C++功能,避免了非法内存操作。另一方面,通过Java的安全体系架构来确保Java代码的安全性。 (5)解释的 Java代码是解释执行的,我们使用Java 编译器将Java 代码编译成字节码,这是一种中间代 码,然后由Java 解释器解释执行。而C++程序是编译执行的, (6)与平台无关的 其源代码被编译成1种结构中立的中间文件格式。只要有Java 运行系统的机器都能执行这种中间代码。 Java源程序被编译成一种与机器无关的字节码格式,在Java虚拟机上运行。 (7) 多线程的 Java语言的一个重要特性就是在语言级支持多线程的程序设计。 (8)动态的 Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类。

C语言和JAVA区别:

不同: 1 C语言是面向过程的语言,执行比JAVA效率高 Java是面向对象的语言 2 C语言不能跨平台;java可以跨平台直接移植 3 c语言是int short long char float double 还有一些特殊类型 结构体,指针,联合体等,数组,字符串 ; java 是byte int short long float double char boolean ,而且c语言的基本类型的位数和操作系统和机器相关,而java 是固定的; 4 C语言以头文件来阻止文件 JAVA以类来阻止文件 5 Java采用Unicode字符集,C语言通常采用的是ASCII字符集。 6 C语言的变量可以不进行初始化,但Java的变量要进行初始化。 同: 1 编程语言都是由语法和相应的程序库所构成,Java有自身的类库,C语言则有标准库 2 Java可以算是从C++发展而来的bai,因此Java与C语言的语法比较类似

实例变量和类变量的区别

类变量和实例变量的区别是什么? 类变量也叫静态变量,也就是在变量前加了static 的变量; 实例变量也叫对象变量,即没加static 的变量; 区别在于: 类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

实例方法和类方法的区别

区别: 1、类方法是属于整个类,而不属于某个对象。 2、类方法只能访问类成员变量,不能访问实例变量,而实例方法可以访问类成员变量和实例变量。 3、类方法的调用可以通过类名.类方法和对象.类方法,而实例方法只能通过对象.实例方法访问。 4、类方法只能访问类方法,而实例方法可以访问类方法和实例方法。 5、类方法不能被覆盖,实例方法可以被覆盖。 子类对象的构造过程: 1.加载父类,为父类的静态变量分配内存。 2.加载子类,为子类的静态变量分配内存。 3.执行父类静态变量的赋值运算和父类的静态初始化块。 4.执行子类静态变量的赋值运算和子类的静态初始化块。 //静态变量和静态初始化块的执行顺序是按代码中静态变量和初始化块的先后顺序来执行 5.创建父类对象,为父类非静态变量分配内存。 6.创建子类对象,为子类非静态变量分配内存。 7.执行父类非静态变量的赋值运算。 8.执行父类的构造方法。 9.执行子类非静态变量的赋值运算。 10.执行子类的构造方法。

面向对象和面向过程的区别:

面向过程: 当需要实现一个功能的时候,每一个步骤我们都需要自己去做,处理实现功能的每一个细节。 面向对象: 当需要实现一个功能的时候,我们不需要自己去做,可以直接找一个已经具有该功能的东西,来帮我解决问题。 面向对象三大特征:封装、继承、多态。 面向过程 优点:性能比面向对象高 面向对象 优点:易维护、易复用、易扩展。

数组与ArrayList区别:

在这里插入图片描述

请举例说明string类与StringBuffer类的区别:

String中的方法都是返回一个新的字符串,而没有改变原来的字符串; String 类重写了Object 的equals方法,String类能用 “十”连接 StringBuffer中的方法都是能改变原字符串的值; StringBuffer 类没有重写了Object 的equals 方法,StringBuffer 类不能用“十”连接 请举例说明重载和重写的区别: 重写:子类可以重新实现父类的某些方法,并具有自己的特征。 重载:方法重载使得在类中可以存在方法名相同的多个方法, 但方法的原型不能完全相同,方法的原型包括方法名和方法参数类型。 区别:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性, 而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载; 重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型, 比父类被重写方法更好访问,不能比父类被重写方法

相关推荐: