Java类的继承

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java类的继承脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

继承是面向对象的三大特征之一,也是软件复用的重要手段。Java的继承具有单继承的特点,每个子类只有一个直接父类。

继承的特点

Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类被称为父类,有的也称其为基类、超类。子类是对父类的拓展,子类是一种特殊的父类。
如果定义一个java类时并未显示指定这个类的直接父类,则这个类默认拓展java.lang.Object类。

重写父类的方法

这种子类包含与父类同名方法的现象被称为方法重写,也被称为方法覆盖。方法的重写要遵循“两同两小一大”规则。
两同 即方法名相同,形参列表相同;
两小 指的是子类方法返回值类型应比父类返回值类型更小或相等,子类方法声明抛出的异常类型应该比父类方法声明抛出的异常类型更小或相等;
一大 指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
尤其需要指出的是,覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法

当子类覆盖了父类方法后,子类的对象将无法访问父类中被覆盖的方法,但可以在子类方法中调用父类中被覆盖的方法。如果需要在子类方法中调用父类中被覆盖的方法,则可以使用super(被覆盖的是实例方法)或者父类类名(被覆盖的是类方法)作为调用者来调用父类中被覆盖的方法。

如果父类具有private访问权限,则该方法对其子类是隐藏的,因此其子类无法访问该方法,也就是无法重写该方法。如果子类中定义了一个与父类PRivate方法具有相同的方法名、相同的形参列表、相同的方法返回值类型的方法,依然不是重写,只是在子类中重新定义了一个新方法。

重载主要发生在同一个类的多个同名方法之间,而重写发生在子类和父类的同名方法之间。它们之间的联系很少,除了二者都是发生在方法之间,并且要求方法名相同之外,没有太大相似之处。当然,父类方法和子类方法之间也可能发生重载,因为子类会获得父类方法。

super限定

如果需要在子类方法中调用父类被覆盖的实例方法,则可以使用suPEr限定来调用父类被覆盖的实例方法。
super是Java提供的一个关键字,super用于限定该对象调用它从父类继承得到的实例变量或方法。
正如this不能出现在static修饰的方法中一样,super也不能出现在static修饰的方法中。static修饰的方法是属于该类的,该方法的调用者可能是一个类,而不是对象,因而super限定也就失去了意义。

不管是否使用super调用来执行父类构造器的初始化代码,子类构造器总会调用父类构造器一次。子类构造器调用父类构造器分如下几种情况:

  • 子类构造器执行体的第一行使用super显示调用父类构造器,系统将根据super调用里传入的实参列表调用父类对应的构造器。
  • 子类构造器执行体的第一行代码使用this显示调用本类中重载的构造器,系统将根据this调用里传入的实参列表调用本类中的另一个构造器,执行本类中另一个构造器是即会调用父类构造器。
  • 子类构造器执行体中既没有super调用,也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数的构造器。

脚本宝典总结

以上是脚本宝典为你收集整理的Java类的继承全部内容,希望文章能够帮你解决Java类的继承所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。