讲师中心 微信公众号
AI工具推荐 视频效率加速

在Java里extends关键字如何使用_Java类继承语法说明

夜宇大大_8283

夜宇大大_8283

发布时间:2026-01-26 13:45:52

|

611人浏览过

|

来源于php中文网

原创

extends只能用于类继承,不能修饰接口或方法;它表示子类单继承父类,接口继承用implements,Java不支持多类继承,final类不可被继承,子类构造器必须调用父类构造器。

在java里extends关键字如何使用_java类继承语法说明

extends 只能用于类继承,不能修饰接口或方法

Java 中 extends 是类与类之间建立单继承关系的唯一关键字,它明确表示“子类扩展父类”。你不能用它去实现接口(该用 implements),也不能用它修饰字段、方法或局部变量——编译器会直接报错 illegal start of type 或 unexpected token。

常见误写:

interface B extends A {} // ❌ 错!接口继承接口应使用 extends,但这里 A 若是类就非法;若 A 是接口,语法虽对,但语义不符本题场景(本题聚焦类继承)  
class C extends void method() {} // ❌ 完全语法错误  
class D extends E, F {} // ❌ Java 不支持多类继承
  • 一个类最多只能有一个直接父类(extends 后只能跟一个类名)
  • 如果类没写 extends,默认隐式继承 java.lang.Object
  • final 类不能被 extends,否则编译失败: cannot inherit from final 'X'

子类构造器必须显式或隐式调用父类构造器

只要用了 extends,子类所有构造器的第一行(哪怕没写)都必须是 super(...) 或 this(...)。如果父类没有无参构造器,而子类构造器又没显式调用 super(…),编译就会失败:constructor X in class Y cannot be applied to given types。

示例:

立即学习“Java免费学习笔记(深入)”;

Java Api Extractor
Java Api Extractor

从 Java 项目中提取 Controller 层接口定义为 JSON 数据。

下载
class Parent {
    Parent(String name) { /* 仅此有参构造 */ }
}
class Child extends Parent {
    Child() {
        // ❌ 编译错误:找不到合适的 super()
        // ✅ 必须补上:super("default");
    }
}
  • 若父类只有有参构造器,子类每个构造器都得显式写 super(...)
  • super() 必须是构造器第一句;放在第二句会报 call to super must be first statement
  • 不写 super(...) 也不写 this(...) 时,编译器自动插入 super() —— 所以父类必须存在无参构造器

继承后无法访问父类 private 成员,但可调用 public/protected 方法

子类通过 extends 获得的是父类的“可见接口”,不是全部代码拷贝。private 字段和方法在子类中不可见,连编译都过不去;但 protected 和 public 成员可直接使用(除非被子类同名成员隐藏)。

典型混淆点:

class A {
    private int x = 10;
    protected void print() { System.out.println(x); }
}
class B extends A {
    void test() {
        // System.out.println(x); // ❌ 编译错误:x has private access in A
        print(); // ✅ OK,protected 方法可继承并调用
    }
}
  • private 成员不会被继承,子类里查不到、不能重写、也不能反射直接访问(除非设 setAccessible(true),但那是另一回事)
  • 子类定义了同名 public 方法,并不叫“重写 private 方法”——因为父类那个根本不可见,这只是个全新方法
  • 字段永远不被重写(只有方法才谈重写),子类同名字段只是隐藏(hiding),不是覆盖

泛型类继承需注意类型擦除与桥接方法

带泛型的父类被继承时,子类是否保留泛型、如何指定类型参数,直接影响方法签名和多态行为。Java 在编译期擦除泛型,但会生成桥接方法(bridge methods)来保证多态调用正确性——这点容易在重写泛型方法时出问题。

例如:

class Box<T> {
    T value;
    void set(T v) { value = v; }
}
class StringBox extends Box<String> {
    @Override
    void set(String v) { super.set(v); } // ✅ 正确重写
    // 编译器会自动生成 bridge 方法:void set(Object o) { set((String)o); }
}
  • 子类若写 class StringBox extends Box(原始类型),虽然能编译,但失去类型安全,且无法重写 set(T) 的具体版本
  • 若父类方法签名含泛型类型(如 <u> U convert(U input)</u>),子类重写时不能改类型参数名或约束,否则视为新方法而非重写
  • IDE 或 javap -c 可看到桥接方法,它们对开发者透明,但调试时可能困惑“为什么断点进了两个同名方法”

子类能否访问父类成员、构造器怎么联动、泛型如何传递——这些不是靠记住 extends 写在哪行,而是取决于它触发的那套继承契约。最容易忽略的是:父类构造器调用规则和 private 的“不可继承性”,这两点一旦出错,往往报错信息不直观,需要回溯到继承链起点看声明。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

355

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

355

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

355

2025.11.27

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

14386

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

1705

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

3977

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

6141

2024.03.01

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3188

2023.10.19

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn