java类的继承

简介: java中的继承用extends关键字来实现,被继承的类叫做超类、父类、基类,实现继承的类称为子类、派生类。 子类是一种特殊的父类,因此可以看作父类是大类,子类是小类。 extends实际上是拓展的意思,而父类和子类的关系实际上用拓展来解释似乎更加的恰当,子类在父类功能的基础上增加新的功能。 在继承中,除开父类的构造器以外,子类几乎可以继承父类所有的功能和属性。 每
java中的继承用extends关键字来实现,被继承的类叫做超类、父类、基类,实现继承的类称为子类、派生类。


子类是一种特殊的父类,因此可以看作父类是大类,子类是小类。


extends实际上是拓展的意思,而父类和子类的关系实际上用拓展来解释似乎更加的恰当,子类在父类功能的基础上增加新的功能。


在继承中,除开父类的构造器以外,子类几乎可以继承父类所有的功能和属性。


每个类最多只能有一个直接的父类,可以有无限多个间接父类,就像人一样,只能有一个亲生父亲。


若一个类定义的时候没有显示定义直接父类,则默认继承java.lang.Object,他是所有类的父类,因此所有的java对象都可以调用java.lang.Object的实例方法。


父类引用可以指向子类对象,即声明一个父类型的变量可以实例化为子类的对象,这也是java多态性的一个重要的实现方式。除此之外,方法的重载也是多态性的实现方式之一。


需要注意的是,重写方法和被重写的方法必须同时都是类方法或者同时都不是类方法。


继承中还有一个很重要的概念是重写,对于子类重写过的方法,使用时究竟使用重写前的版本还是重写后的版本,取决于对象的类型而不是引用的类型。


重写的时候,子类方法会覆盖父类的方法,父类private方法不可被重写。


有的时候,当子类定义了与父类同名的属性时,也会覆盖父类的属性。正常情况下,子类定义的方法、子类属性直接访问该属性时,都会默认访问覆盖后的方法和属性而无法访问到被覆盖的方法和属性。但是在子类定义的实例方法中可以通过super来访问父类被覆盖的方法和属性。


如果子类中没有和父类同名的属性,那么访问的时候不需要用super,可以直接访问。和this一样,super也不能出现static方法中。


继承的时候不继承父类的构造器,如果在子类中一定要用的话,也可以通过super来调用。而即使不显示的调用父类构造器,系统也会默认在子类构造器执行体的第一行调用父类构造器一次,只不过是调用父类的无参构造器。


super调用和this调用不会同时出现。


子类构造器调用父类构造器有几种情况:


1.super显示调用,系统会根据super里的实参列表选择调用父类的哪个构造器。


2.子类构造器执行体的第一行用了this调用本类重载的构造器,那么在执行调用的构造器的第一行会调用父类的构造器。


3.子类中既没有this调用也没有super调用,系统会默认在子类构造器执行体的第一行调用父类的无参构造。


创建任何对象总是从该类继承树的最顶层构造开始执行,然后依次向下,最后才是本类。

目录
相关文章
|
8天前
|
Java
Java中的继承和多态是什么?请举例说明。
Java中,继承让子类继承父类属性和方法,如`class Child extends Parent`,子类可重写父类方法。多态允许父类引用指向子类对象,如`Animal a = new Dog()`,调用`a.makeSound()`会根据实际对象类型动态绑定相应实现,增强了代码灵活性和可扩展性。
10 0
|
15天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
13 3
|
3天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
3天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
7天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
7天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
11 0
|
9天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
21 9
|
9天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
10天前
|
存储 安全 Java
java多线程之原子操作类
java多线程之原子操作类
|
11天前
|
Java
Java中的异常类总结
Java中的异常类总结