Java要点概要(三)

类可以多继承吗?
Java中类只能单继承,一个类只能有一个直接父类,但可以多层继承,也就是类的父类可以是继承别的类。

子类可以继承父类那些?
子类继承父类非私有的属性和方法。

什么是重写?
在继承关系中,子类会自动继承父类中的公共方法,在子类需要对继承的方法进行一些修改时,就需要对方法进行重写,子类重写父类方法要求子类方法与父类方法一致,包括方法名,参数和返回值。

super关键字的作用?
在子类重写完父类方法后,无法直接调用父类方法,使用super关键字可以调用父类的成员变量和成员方法,还可以调用父类的构造方法,不过必须放在子类构造方法的第一行,且只能出现一次。

子类实例化构造方法的调用顺序?
子类实例化调用当前类的构造方法时,一定会调用父类的某个构造方法,可以通过super指定调用,没有指定则默认调用父类无参构造方法。

Object类?
Object类是所有类的父类,每个类都直接或者间接的继承自该类,如果没有使用extends关键字为这个类显式的指定父类,则这个类会默认继承Object类。Object类常用的方法有equals,hashCode,toString,finalize等。

final关键字的使用?
final关键字修饰类,类不可继承。
final关键字修饰方法,方法不能被重写。
final关键字修饰变量,变量只能赋值一次,Java虚拟机不会对其修饰的变量初始化,可以先声明再进行唯一一次赋值。

什么是抽象类?
当定义一个类时,我们需要定义一些方法来描述对象的行为特征,但有时具体行为是无法确定的,这时我们可以通过抽象类只定义方法名,这种通过abstract修饰的方法称为抽象方法,包含抽象方法的类必须定义为抽象类,但抽象类中不一定包含抽象方法,抽象多用于声明子类方法,再去实现抽象方法,抽象类中存在抽象方法,没有方法体,不可直接用于实例化。

什么是接口?
接口使用interface声明,不再使用class,接口中的方法全为抽象方法,jdk1.8之后添加了静态方法和默认方法,这两种允许有方法体。
接口与接口之间可以多继承。
一个类可以去实现多个接口,接口的实现类必须实现全部抽象方法,抽象类实现接口可以不全部实现。

多态的体现?
java的多态体现在Java通过子类继承父类,重写父类方法,父类引用指向子类对象,当不同数据类型的对象调用同一方法时,体现出不同的行为。

内部类有那些?
成员内部类,局部内部类,静态内部类,匿名内部类

什么是函数式接口?
函数式接口指的是有且仅有一个抽象方法的接口。

Lambda表达式的使用?
lambda表达式用于简化匿名内部类,分为三个部分,参数列表,“->”,表达式主体。当参数只有一个时,可以用()代替。

什么是异常?
Java提供了大量的异常类来标记异常,这些类都继承自Throwable类,有Error和Exception两个直接子类,Error是错误类,通常是系统错误,非程序错误,Exception是异常类,异常又分为编译时异常和运行时异常(RuntimeException),。

如何捕获异常?
捕获异常有三种方法。
1、通过try…catch…finally,try{}代码块内用于检测异常,catch(){}代码块内用于处理异常,需要指明一个参数用于接收异常类型,finally{}代码块无论异常是否发生都会执行,用于存放一些必须执行的语句,例如释放资源,关闭线程池等。
2、在类上使用throws关键字抛出异常,让调用者进行处理。
3、使用throw在方法内抛出异常类对象,比如throw new Exception(“异常发生了”),但还需使用try…catch或者throws进行异常处理。

自定义异常类
自定义异常类需要继承Exception类重写无参,有参构造方法,使用super()语句调用Exception构造方法。

垃圾回收机制
对象在堆内存中运行,根据引用状态分为三种
1、可用状态,有一个及以上的变量引用。
2、可恢复状态,当当前对象没有引用时,垃圾回收机制准备回收对象内存,转为可恢复状态,finalize()方法用于资源清理,即确定清除内存的对象,再调用之前重新引用则会转入可用状态,否则转入不可用状态。
3、不可用状态,处于不可用状态的资源将会永久失去引用,等待内存回收。
还可以手动调用强制系统进行垃圾回收,调用System类的gc()静态方法,或者调用Runtime对象的gc()实例方法。

什么情况下会进行垃圾回收
正常情况下,在对象失去引用变为垃圾时,会暂时保存在内存中,当积累到一定程度时,JVM会启动垃圾回收器将这些垃圾对象从内存释放,也就是说存在垃圾并不意味着会立即清理。
除此之外,还可以进行手动回收,调用System类的gc()静态方法,System.gc(),或者调用Runtiime对象的gc方法,Runtime.getRuntime().gc()。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raintempest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值