关于java继承知识点总结

目录

继承

概念

代码格式

为什么要继承

继承类型

extends

implements

子类与父类

性质

final关键字:

super关键字:引用子类的父类。

this关键字:指向类自己的引用。

构造器

概念

子类与父类的构造器

看父类

子类中


继承

概念

继承就是子类继承父类的特征和行为 ,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的属性

从已有的类派生出新的类,称为继承。

代码格式

java 复制代码
class 父类 {
}
 
class 子类 extends 父类 {
}

为什么要继承

在不同类中会有共同的属性或者方法,我们可以将这些共同的属性和方法放在同一个父类 ,然后再派生出其他子类来共享。

继承实现软件重用的重要手段,避免重复,易于维护,易于理解。

继承类型

java不支持一继承多,但支持多重继承。

即一个子类不能同时继承多个父类,但是可以一层一层继承。

(C++支持多重继承)

extends

**使用extends关键字可以让一个子类继承一个父类。**格式为

java 复制代码
class 父类 {
}
 
class 子类 extends 父类 {
}
implements

使用 implements 关键字可以变相地让一个类多继承, 但使用情况是类继承接口,格式为

java 复制代码
public interface A {
}
 
public interface B {
}
 
public class C implements A,B {
}

注:接口的声明用interface 。

子类与父类

性质

  1. 子类拥有父类非 private 的属性、方法。

    复制代码
    即子类不能直接继承父类中的 private 属性和方法,需要通过有参构造函数进行继承。
  2. 子类可以书写自己的属性和方法 ,即子类可以对父类进行扩展

    这两点可以概括为子类从它的父类中继承可访问的数据域和方法,也可以添加新的数据域和新的方法。

  3. 子类可以对父类的方法进行重写 ,但重写的父类方法要求不能被final修饰

  4. 父类必须**要声明一个默认的构造函数。**如

    java 复制代码
    public 父类名(){}

final关键字:

  1. final 修饰类中的属性或者变量无论属性是基本类型还是引用类型,

    作用:变量里面存放的"值"不能变。

  2. final修饰类中的方法

    作用:可以被继承,但继承后不能被重写

  3. final修饰类

    作用:类不可以被继承。

super关键字引用子类的父类。

java 复制代码
//构造方法
super();
//或
super(参数列表);
//-----
//调用父类的方法语法
super.方法名(参数列表)
  1. 调用父类的构造方法。
  2. 调用父类的方法(函数)。
  3. 访问父类的数据域(可以这样用但没必要这样用)。
  4. 注:super语句必须是子类构造方法中的第一条语句。
  5. 静态方法不能使用super关键字。

this关键字:指向类自己的引用。

构造器

概念

  1. 用来初始化对象的新实例
  2. 构造器与类同名,且没有返回类型,可以有参数。(参数为类的变量)
  3. 在Java中,如果没有显式地定义构造器,编译器会自动提供一个无参数的默认构造器。 父类必须要声明一个默认的构造函数。

子类与父类的构造器

子类是不继承父类的构造器的 ,它只是调用(隐式或显式)。

看父类

如果父类的构造器带有参数 ,则必须在子类的构造器中 显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。如

java 复制代码
子类名() {
    super(参数列表);
}

如果父类构造器没有参数 ,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。如

java 复制代码
子类名() {}

子类中

  • 子类的所有构造方法内部, 第一行会(隐式)自动先调用父类的无参构造函数super()
  • 如果子类构造方法第一行显式调用了父类构造方法,系统就不再调用无参的super()了

在编写代码要注意:

  • 1.如果父类中不含 默认构造函数(就是 类名() ),那么子类中的super()语句就会执行失败,系统就会报错。一般 默认构造函数 编译时会自动添加,但如果类中已经有一个构造函数时,就不会添加。
  • 2.执行父类构造函数的语句只能放在函数内语句的首句,不然会报错。

本文大部分知识点都来自菜鸟教程https://www.runoob.com/java/java-inheritance.html

相关推荐
守护者17012 分钟前
JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”
java·学习
looklight17 分钟前
7. 整数反转
c++·算法·leetcode·职场和发展
bing_15823 分钟前
Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
java·spring boot·后端
ergdfhgerty25 分钟前
斐讯N1部署Armbian与CasaOS实现远程存储管理
java·docker
勤奋的知更鸟38 分钟前
Java性能测试工具列举
java·开发语言·测试工具
三目君42 分钟前
SpringMVC异步处理Servlet
java·spring·servlet·tomcat·mvc
用户05956611920942 分钟前
Java 基础篇必背综合知识点总结包含新技术应用及实操指南
java·后端
fie888943 分钟前
Spring MVC扩展与SSM框架整合
java·spring·mvc
不太可爱的叶某人1 小时前
【学习笔记】深入理解Java虚拟机学习笔记——第3章 垃圾收集器与内存分配策略
java·笔记·学习
YuTaoShao1 小时前
Java八股文——JVM「类加载篇」
java·开发语言·jvm