关于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

相关推荐
weixin_307779132 小时前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
一水鉴天5 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能
Frank_refuel6 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
Wang's Blog7 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_949950637 小时前
练题簿在线免费刷题 从资料整理到考前自测
面试·职场和发展·pdf·word·刷题
2601_962071577 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
\光辉岁月/8 小时前
5.java-数组
java·开发语言
Java后端的Ai之路8 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
谢亮_vipxieliang8 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
时间的拾荒人8 小时前
Qt 多线程详解:从 QThread 到实战
开发语言·qt·面试