文章目录
一、说说你对面向对象思想的理解?
对象是一种奇特的变量,它除了可以存储数据之外还可以对它自身进行操作。它能够直接反映现实生活中的事物,例如人、车、小鸟等,将其表示为程序中的对象。每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),java就是通过对象之间行为的交互来解决问题的。
面向对象就是把构成问题的事物分解成一个个对象,建立对象不是为了实现一个步骤,而是为了描述某个事物在解决问题中的行为。
类是面向对象中的一个很重要的概念,因为类是很多个具有相同属性和行为特征的对象所抽象出来的,对象是类的一个实例。
类具有三个特性:封装、继承和多态。
封装:核心思想就是“隐藏细节”、“数据安全”,将对象不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。
继承:子类可以继承父类的属性和方法,并对其进行拓展。
多态:同一种类型的对象执行同一个方法时可以表现出不同的行为特征。通过继承的上下转型、接口的回调以及方法的重写和重载可以实现多态。
二、Java 对象初始化顺序
类变量(静态变量)、实例变量(非静态变量)、静态代码块、非静态代码块的初始化时机
由 static 关键字修饰的(如:类变量[静态变量]、静态代码块)将在类被初始化创建实例对象之前被初始化,而且是按顺序从上到下依次被执行;
没有 static 关键字修饰的(如:实例变量[非静态变量]、非静态代码块)初始化实际上是会被提取到类的构造器中被执行的,但是会比类构造器中的代码块优先执行到,其也是按顺序从上到下依次被执行。
三、Overload 和 Override 的区别?Overload 的方法是否可以改变 返回值的类型?
Overload:重载
Override:重写
重载:
同一个类中,方法名相同,参数列表不同。与返回值类型无关。
重写:
存在于子父类,或者子父接口中,方法声明相同。
Overload的方法可以改变返回值的类型,因为它与返回值类型无关。
四、int 和 Integer 有什么区别?
int属于基本数据类型,Integer属于引用数据类型,int的初始值是0,Integer的初始值是null,Integer是int的包装类,属于面向对象思维编程,创建Integer需要使用new的方式为其进行内存分配。
五、char 型变量中能不能存贮一个中文汉字,为什么?
char 型变量是用来存储 Unicode 编码的字符的,Unicode 编码字符集中包含了汉字,所以,char 型变量中可以存储汉字。不过,如果某个特殊的汉字没有被包含在 Unicode 编码字符集中,那么,这个 char 型变量中就不能存储这个特殊汉字。