Java父类与子类的区别及super关键字详解

当代码有了”血缘关系”

想象你正在组装一辆智能汽车。先造出基础款父类汽车,它有方向盘和油门;再基于它造电动子类汽车,新增充电功能。这就是Java继承的核心:父类提供通用功能,子类扩展专属特性。好比基础款是父亲,电动款是儿子,儿子继承了父亲的基因又发展了自己的个性。

Java中Superclass和子类区别在哪

父子身份如何定义

在Java里,用extends关键字建立血缘关系。比如:

class Animal { } // 父类
class Dog extends Animal { } // 子类

这里Animal是父类(超类),像家族族长;Dog是子类,自动获得族长的能力。子类可以访问父类的非私有成员,但父类不能反向访问子类新增的内容——就像长辈不会继承小辈的新技能。

方法重写的变身术

子类不满意父类的方法?直接重写它!比如父类有makeSound方法默认喵叫,子类Cat重写后改成”喵呜~”:

java
class Animal {
void makeSound { System.out.println(“叫”); }
class Cat extends Animal {
@Override
void makeSound { System.out.println(“喵呜~”); }

这时创建Cat myCat = new Cat,调用myCat.makeSound输出的是子类版本。但父类方法并没消失,用super.makeSound就能唤醒它。

super关键字的三大神技

这个不起眼的super实际是父子沟通的密码:

  • 召唤父类方法:子类方法里写super.父类方法,直接调用被重写的父类逻辑
  • 启动父类构造器:子类构造函数首行用super(参数)初始化父类属性
  • 避免命名冲突:父子类有同名变量时,super.变量名明确指定父类版本

就像儿子创业时借用父亲的经验和资源,但最终走自己的路。

构造函数的传承奥秘

创建子类对象时,Java会先秘密调用父类构造器。不写super?编译器自动加!但要注意:

场景 示例 结果
默认构造 子类未写super 自动调用父类无参构造
父类有参构造 super(“参数”) 手动调用指定父类构造
父类无无参构造 未显式调用super 编译报错!必须显式调用

好比儿子出生时,必须先准备好父亲传下来的祖宅地基,才能加盖自己的新楼层。

访问权限的家族规矩

家族成员能共享什么?看访问修饰符:

  • public客厅:全家自由进出
  • protected书房:父子可进,外人禁入
  • private保险箱:仅父类自己能开

子类继承父类时,private成员像锁着的传家宝——知道存在但打不开。想访问?父类需提供public/protected的”钥匙”方法。

多态:父子的角色扮演

最神奇的是父类变量装子类对象

java
Animal myPet = new Cat;
myPet.makeSound; // 输出”喵呜~

这里编译时按Animal类检查,运行时却执行Cat的方法。就像用”动物”名义收养猫,实际得到的是猫的行为。但要注意:此时不能直接调用Cat独有的方法,除非强转类型。

掌握父类与子类的区别,就像理解家族传承的智慧。父类沉淀共性,子类绽放个性,super关键字是两代间的桥梁。用好继承体系,让代码像家族树一样既稳固又充满活力!

内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。

本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/150041.html

(0)
上一篇 2026年1月20日 上午5:12
下一篇 2026年1月20日 上午5:13
联系我们
关注微信
关注微信
分享本页
返回顶部