当前位置: 首页 > 图灵资讯 > 技术篇> Java面试题汇总《Java基础、语法21-25》

Java面试题汇总《Java基础、语法21-25》

来源:图灵教育
时间:2023-06-08 09:15:19

21.类和对象之间的关系类是对象的抽象,对象是类的具体例子。类是抽象的,不占用内存,但对象是具体的,占用存储空间。类是用来创建对象的蓝图,它是一个定义方法和变量的软件模板,包括特定类型的对象。

类和对象就像图纸和实物、模具和铸件之间的关系。

例如,人类是一个具有身高、体重等属性的概念。人类可以做饭、说话和其他方法。

小明是一个特定的人,也就是一个例子。他的属性是身高200厘米,体重180公斤。他做的方法是吃一碗白米,说“12345”。

22.面向过程和面向对象的区别在于软件开发理念。首先是面向过程,然后是面向对象。在大型项目中,针对面向过程的不足,引入了面向对象的开发理念。

比喻

蒋介石和毛泽东是面向过程和对象的杰出代表,充分说明面向对象在解决复制问题时具有更大的优势。

面向过程是鸡蛋炒饭,面向对象是盖米。盖米的优点是“菜”和“饭”的分离,从而提高了制作盖米的灵活性。如果你对食物不满意,换食物。软件工程的专业术语是“可维护性”和“饭” 与“菜”的耦合度相对较低。

区别

不同的编程思路: 面向过程主要是实现功能的函数开发,面向对象应首先抽象出类、属性及其方法,然后通过实例类和执行方法完成功能。

封装:都是封装的,但面向过程是封装的功能,面向对象是封装的数据和功能。

面向对象具有继承性和多态性,而面向过程没有继承性和多态性,因此面向对象具有明显的优势。

方法重载与方法重写(覆盖)的区别

23.this和super关键字的作用this是指对象内部的引用,也是为了解决成员变量和局部变量的同名问题;this可以调用成员变量,而不是局部变量;this也可以调用成员方法,但在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一句话。,而且this关键词不允许出现在静态方法中。

super代表引用当前对象的直接父类对象。super可以调用直接父类成员的变量(注意权限修改符的影响,如无法访问private成员)

super可以调用直接父类成员的方法(注意权限修饰符的影响,如无法访问private成员);super可以调用直接父类的结构方法,仅限于结构方法,必须是第一句话。

24.static关键字的作用static可以修改变量、方法、代码块和内部类别

static属性属于此类,即该类创建的所有对象共享相同的static属性。对象创建后,可以通过对象名、属性名、类名和属性名进行访问。您也可以在创建任何对象之前访问类名和属性名。

static变量与非static变量的区别(都是成员变量,不是局部变量)

1.内存中的份数不同

不管有多少对象,static变量只有一个。对于每个对象,实例变量将有一个单独的部分

static变量属于整个类,也称为类变量。非静态变量属于对象,也称为实例变量

2.存储在内存中的不同位置

2.存储在内存中的不同位置

3.不同的访问方式

实例变量: 对象名.变量名 stu1.name="小明明";

静态变量:对象名。变量名 stu1.schoolName=“西二旗小学”; 不建议这样使用

类名.变量名 Student.schoolName=“东三旗小学”; 推荐使用

4.在内存中分配空间的时间不同

Student.schoolName=“东三旗小学”;或者Student stu1 = new Student(“小明”,“男”,20,98);

static方法也可以通过对象名、方法名、类名和方法名来访问

static代码块。第一次使用时(可以调用static属性和方法,也可以创建其对象)执行静态代码块,只执行一次,主要作用是实现static属性的初始化。

static内部类:属于整个外部类,而不是每个外部类的对象。外部类的非静态成员(变量或方法)不能访问,.可访问外部静态成员

25.final和abstract关键字的功能final和abstract是功能相反的两个关键字,可以比较记忆

abstract可用于修改类和方法,不能用于修改属性和结构方法;使用abstract修改的类是抽象类,需要继承。使用abstract修改的方法是抽象方法,需要子类重写。

final可用于修改类别、方法和属性,不能修改结构方法。使用final修改的类别不能继承,使用final修改的方法不能重写,使用final修改的变量值不能修改,因此成为常数。

特别注意:final修改的基本类型变量,其值不能改变,从原始变量到常量;但final修改引用类型变量,栈内存引用不能改变,但堆内存中对象的属性值仍可改变。例如

packagecom.bjsxt;classTest {publicstaticvoidmain(String[] args) {finalDog dog =newDog(欧欧”);dog.name ="美美";///正确dog =newDog(亚亚”);//错误}}