【Java基础】继承 多态 接口 异常 面试场问题
继承
继承为了重用父类的代码,两个类存在is-a(是一种)关系时,可以使用继承,达到代码复用(优点),提高效率
例:猫狗都是动物,都有毛色,习性等特征,可以将其封装到父类anminal
java中是否可以多继承?
答:不可以。
为什么不能多继承?
答:(菱形继承)反推
假设存在多继承,A类派生B,C , 则B包含自己的内容和继承过来的内容 a,b ,C同 a,c;如果多继承存在 D继承B和C,则D中会包含a,b a ,c 此时a被复制两份 同一个作用域中,不能出现两份相同的
所以只能单一继承。
方法重载和方法重写的区别?
重载:同一个类 根据类型区别方法 (方法名相同, 参数列表不同)
重写:父子类中(子类重新实现父类的方法)不在同一 个类,方法名,参数列表都相同。
(重写)修饰符:子类方法修饰符的权限>=父类方法修饰符
intern()
比较是否在相同的位置取值?
intern方法使得对象不从new取值,而在常量池中取值 所以等于
多态(重点)
什么是多态?
多态是对同一个行为具有多个不同的表现形式或者形态
例:sleep () 对于不同对象有不同的实现方式
对多态的理解?
静多态:
方法重载 编译器多态 add(int[] arr),add(long []arr)
动多态:
运行时多态
条件:继承,方法重写,向上造型
动态绑定的实现原理?
例:Animal a=new Cat();
a.eat();具体是猫在吃饭
实际就是地址覆盖 ,子类的方法覆盖了父类的方法
接口和抽象类
接口和抽象类的区别?
使用场景:接口-》类与类之间需要有特定的接口进行协调,而不在乎实现方式
例: 比如ArrayList和LinkedList都有add方法,就可以提供一个接口,提供统一函数名
抽象类-》在既需要统一的接口又需要实例变量或者方法实现
区别:
1、接口-》实现
抽象类-》需要被子类继承使用 extends
2、接口:抽象方法声明(public abstract) ,常量(public static final int a=20;)
抽象类:可以包含方法声明或者方法体的实现,及成员变量常量 及抽象方法
共同点:不能实例化对象
泛型
异常
谈一谈对异常五个关键字的理解?
try :将可能发生的异常放到try块中
不能过细划分 前面语句发生异常 后面不会被执行。
catch :捕获异常
finally :只能和一个finally进行匹配,finally块必定会被执行到 例:io关闭文件
throw:扔异常对象
throws:扔异常类
return和System.exit()
如果是return ,从finally中退出
如果是System ,从try中直接退出当前进程
谈一谈你对异常的理解?
1)继承结构:
Object:——Throwable——(Error ,Exception(RuntimeException,编译器异常))
2)五个关键字使用注意点:
见过的异常?
空指针
数组下标越界
栈溢出
中断异常
sql相关的异常……
OOM