1、Java面向对象的三大特征是什么 ?
封装、继承、多态
2、什么是封装?
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制 在程序中属性的读和修改的访问级别;将抽象得到的数据和行 为(或功能)相结合,形成一个有机的整体,也就是将数据与 操作数据的源代码进行有机的结合,形成“类”,其中数据和函 数都是类的成员。
3、什么是继承?
继承就是子类继承父类的特征和行为,使得子类对象(实例) 具有父类的属性和方法,或子类从父类继承方法,使得子类具 有父类相同的行为。
4、什么是多态?
同一操作作用于不同的对象,可以有不同的解释,产生不同的 执行结果,这就是多态性。简单的说:就是用基类的引用指向 子类的对象。
5、使用多态的好处?
1、应用程序不必为每一个派生类编写功能调用,只需要对(抽 象)基类进行处理即可。大大提高程序的可复用性。 (继承)
2、派生类的功能可以被基类的方法或引用变量所调用,这叫 向后兼容,可以提高可扩充性和可维护性。(多态的真正作用)
6、static关键字干什么用的 ?
staitc关键字 可以用于修饰 类、属性、方法 、代码块。 修饰的变量是 归属类所有的; 修饰的方法是 归类所有的; 修饰代码块,调用类时 即可执行;
7、使用static 关键字修饰属性和不使用static关键字修饰属性 区别是什么?
static关键字修饰的属性 :是类的属性
.eg: Dog.type (type 用static修饰) 非static的属性: 类的对象的属性
.eg: (new Dog()).type (type 没用static修饰)
8、final是干什么用的?
被final修饰的属性:不可被修改; final修饰的类: 不能够被 extends(继承): 最终类 final修饰方法: 不能被重写
9、构造方法 是干什么用的 ?
构造方法是一种特殊的方法,它是一个与类同名的方法。对象 的创建就是通过构造方法来完成,其功能主要是完成对象的初 始化。当类实例化一个对象时会自动调用构造方法。构造方法 和其他方法一样也可以重载。
10、什么是方法重载(overLoad)?
方法重载是指在一个类中定义多个同名的方法,但要求每个方 法具有不同的参数的类型或参数的个数。调用重载方法时, Java编译器能通过检查调用的方法的参数类型和个数选择一个 恰当的方法。方法重载通常用于创建完成一组任务相似但参数 的类型或参数的个数或参数的顺序不同的方法。Java的方法重 载,就是在类中可以创建多个方法,它们可以有相同的名字, 但必须具有不同的参数,即或者是参数的个数不同,或者是参 数的类型不同。调用方法时通过传递给它们的不同个数和类型 的参数,以及传入参数的顺序来决定具体使用哪个方法。
11、什么是方法重写(overWrite)?
方法的重写是指两个方法的返回值、方法名、参数的类型和个 数相同(子类重写父类的方法)。
方法的重写,只能发生在子类中。
若子类中的方法与父类中的某一方法具有相同的方法名、返回 类型和参数表,则新方法将覆盖原有的方法。 如需调用父类 中原有的方法,可使用super关键字,该关键字引用了当前类 的父类。
方法重写的权限:子类中的权限大于或等于父类的权限,(修 饰符高低:private < 默认修饰符<protected < public)
特殊情况:子类不能重写父类被声明为private权限的方法
12、方法重写和方法重载的区别是什么?
重载涉及同一个类中的同名方法,要求方法名相同,参数列表 不同,与返回值类型,访问修饰符无关。 重写涉及的是子类和父类之间的同名方法,要求方法名相同, 参数列表相同,返回值类型相同(或是其子类),访问修饰符 不能严于父类。
13、 this关键字 是什么意思?
(1)this代表当前对象的一个引用。所谓当前对象,指的是 调用类中方法或属性的那个对象; (2)this只能在方法内部使用,表示对“调用方法的那个对 象”的引用。但要注意,如果在方法内部调用同一个类的另一 个方法,就不必使用this,直接调用即可。当前方法中的 this引用会自动应用于同一类中的其他方法。 (3)this不能用于静态方法。main方法也是静态的,所以 this也不能用于main方法。 (4)可以使用this关键字调用重载构造方法。避免相同的初 始化代码,只能在构造方法中用,并且必须位于构造方法的第 一句。并且,除了构造器之外,编译器禁止在其他任何方法中 调用构造器。
14、super关键字 是什么意思?
1、关键字super可以用于两种途径: 调用父类的方法。 调用父类的构造方法。 2、super能出现在实例方法和构造方法中,不能使用在静态 方法中。且大部分情况下可以省略。 3、super()只能出现在构造方法第一行,通过当前的构造方 法去调用、"父类"中其它的构造方法,目的是:代码复用(创 建子类对象的时候,先初始化父类型特征)。
15、什么是抽象类、作用?
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象 概念,是对一系列看上去不同,但是本质上相同的具体概念的 抽象。 通常在编程语句中用 abstract 修饰的类是抽象类。在java 中,含有抽象方法的类称为抽象类,不能生成对象。 抽象类是不完整的,它只能用作基类抽象类主要用来进行类型 隐藏和充当全局变量的角色。 【注意】: 抽象类中可以没有抽象方法、但是具有抽象方法 的类,必须是抽象类;
16、多态:java当中的对象的基类是哪个 ?
Object是所有java类型的基类 所在的具体位置是:java.lang.Object
1、java编译器遇到没有父类的java类时为其指定一个默认的 父类(Object)
2、jvm虚拟机在运行时遇到没有父类的java类时自动为其指 定一个默认的父类
3、列举Object常见方法 clone()、equals()、 toString()
17、 自动类型转换和 强制类型转换
java基础: 兼容的并且使从小的类型转到大的类型 ; byte–>short–>int–>long 反方向需要强制类型转换
Java面向对象当中: 子类 -->基类 :自动类型转换 父类–>子类的时候: 强制类型转换 String -->Object:
18、多态的实现方式有几种?
步骤:
1、编写具有继承关系的父类和子类
2、子类重写父类方法
3、使用父类的引用指向子类的对象
实现多态的几种常见方式:
1、使用父类作为方法形参实现多态
2、使用父类作为方法返回值实现多态
19、接口: 接口在实际项目开发当中的作用?
1、利于代码的规范 这样做的目的一方面是为了给开发人员一个清晰的指示,告诉 他们哪些业务需要实现;同时也能防止由于开发人员随意命名 而导致的命名不清晰和代码混乱,影响开发效率。
2、有利于对代码进行维护 可以一开始定义一个接口,把功能菜单放在接口里,然后定义 类时实现这个接口,以后要换的话只不过是引用另一个类而 已,这样就达到维护、拓展的方便性。
3、保证代码的安全和严密 一个好的程序一定符合高内聚低耦合的特征,能够让系统的功 能较好地实现,而不涉及任何具体的实现细节。这样就比较安 全、严密一些,这一思想一般在软件开发中较为常见。
20、应用题:遇到xx异常时,你是如何解决问题的?
数组下标越界: 找是否元素下标 超出范围了
类型转换异常:一般代码的问题(逻辑不严谨)
类未找到异常: 多半是环境的问题
21、异常涉及到了几个关键字:
try{
代码…
}catch(异常类型 ex){
捕获到遗产后的执行操作
return ;
}finally{
是否存在异常均执行的代码
}
return 和finally 的执行顺序: 先finally 再 return
finally什么情况下不执行?
System.exit(1);
死机、java进程被杀掉了
不可抗力(石墨炸弹… …)
22、throw和throws的区别是什么?(常见高频笔试题)
throw :手动抛出异常
throws : 在方法声明处 ,特殊声明异常,需要它的调用方 手动捕获异常
转载:https://blog.csdn.net/GuanTL_/article/details/115185148