java高频面试题(面向对象类)

1.简述面向对象和面向过程的特点。

第三代计算机高级语言中的分两种:
1.面向过程的编程语言,如:C,BASIC,PASCAL.
2.面向对象的编程语言,如:C++,JAVA,C#.
面向对象程序设计:
简称OOP,是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高程序的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关联的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。
面向过程程序设计:
简称,POP,是一种以过程为中心的编程思想,也可以被称为面向记录编程思想。它们不支持丰富的“面向对象”的特性(比如继承、多台),它们不允许混合持久化状态和域逻辑。
就是分析出解决问题所需的步骤,然后用方法、函数把这些步骤一步一步实现,使用的时候一个一个依次调用。

2.谈谈对象和类的关系

类:具有某些共同特质的实体的集合,一种抽象的数据类型。在面向对象的程序设计语言中,类是对一类“事物”的熟属性与行为的抽象。
对象:对该类的实例,在java中通过new创建。是对该类的一种具体概念,有着自己的个性表示,有独立的属性,依靠属性来区分不同对象。
关系:类是对象的模板,对象是类的实例。在实际开发中应该先有类,之后才能产生对象。类是不能直接直接使用,而对象可以直接使用。

3.如果将内存分为栈和堆,简述他们的特点,以及能够存放什么内容?

栈:存储:函数参数、局部变量、临时变量等。特点:编译器自分配和释放。有入栈(压栈),出栈和栈顶元素。想要读取栈中的某个元素,需要将其之间所有元素出栈才能完成。
堆:存储:对象数据。特点:对象一旦使用完并不会马上消失,典型为使用new申请的内容。而是等垃圾回收器不定时来回收。

4.局部变量、成员变量、静态变量分别怎么声明?

局部变量:在方法中声明的变量。
成员变量:类中方法外的变量,通过new对象来调用。
静态变量:static修饰的变量,可以通过类点调用。

5.局部变量使用之前,必须要手动初始化吗?

6.如果不手动指定成员变量的值,系统将会自动初始化。那初始化的规则是?

成员变量类型 默认值
整数 0
浮点数 0.0
字符 \u0000
布尔 false
引用 null

7.构造方法的名称必须保持跟类名一致吗?

8.构造方法有没有返回值?

没有

9.构造方法何时,被谁调用

创建对象时被系统调用,构造函数还能够被重载,即可以传入参数。

10.构造方法中能够存在return

可以存在return;语句,但不可返回数据。

11.系统一定会给我们提供无参构造吗

不一定,在我们定义了构造器后就不会系统默认给。

12.本类中如何调用构造方法?有什么要求?

空构造必有,并且写个有参构造。这样中new两个类的时候可直接传入参数

13.package的作用

它们在单一的名称空间之下被组织在了一起。这个名称空间就是包名。

14.Import 用于导入包还是类

包中类

15.简述private, default, protected,public的含义

Private 私有属性,不可直接调用
Default 默认属性

Protected 对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private

Public 公开的,可以直接类点使用

16.getter和setter必须提供吗,一般是用来做什么?

不是必须提供,一般在成员属性设置为Private时候需要在对其其赋值与调用时候在需要getter和setter

17.继承有什么好处,使用什么关键字实现

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可。
关键字 class 子类名 extends 父类名 {}

18.如果一个类没有显示继承任何类,那么该类有父类吗?是谁?

java的所有类有一个共同的根父类,就是java.lang.Object,所以没有显式声明父类的类的默认父类就是java.lang.Object。

19.重写指的是什么?

子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变

你可能感兴趣的:(JAVA面向对象)