继承中构造方法的访问特点与super关键字的三种用法
继承中方法的覆盖重写_应用场景
class Phone { public void sendMessage(){ System.out.println("发短信"); } public void call(){ System.out.println("打电话"); } public void showNum(){ System.out.println("来电显示号码"); } }
//智能手机类 class NewPhone extends Phone { //重写父类的来电显示号码功能,并增加自己的显示姓名和图片功能 public void showNum(){ //调用父类已经存在的功能使用super super.showNum(); //增加自己特有显示姓名和图片功能 System.out.println("显示来电姓名"); System.out.println("显示头像"); } } public class ExtendsDemo06 { public static void main(String[] args) { // 创建子类对象 NewPhone np = new NewPhone(); // 调用父类继承而来的方法 np.call(); // 调用子类重写的方法 np.showNum(); } }
继承后的特点——构造方法
当类之间产生了关系,其中各类中的构造方法,又产生了哪些影响呢?
首先我们要回忆两个事情,构造方法的定义格式和作用。
1. 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。
2. 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构
造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。代
码如下:
/* 继承关系中,父子类构造方法的访问特点: 1.子类构造方法当中有一个默认隐含的"super()*调用,所以一定是先调用的父类构造,后执行的子类构造。2.子类构造可以通过super关键字来调用父类重载构造。 3. super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。总结: 子类必须调用父类构造方法,不写则赠送super(),写了则用写的指定的super调用,super只能有一个,还必须是第一个。*/ class Fu { private int n; Fu(){ System.out.println("Fu()"); } }
class Zi extends Fu { Zi(){ // super(),调用父类构造方法 super(); System.out.println("Zi()"); } } public class ExtendsDemo07{ public static void main (String args[]){ Zi zi = new Zi(); } }
super关键字的三种用法
public class Fu { int num = 10; public void method(){ System.out.println("父类方法"); } }
/* /* super关键字的用法有三种: 1.在子类的成员方法中,访向父类的成员变量。 2.在子类的成员方法中,访向父类的成员方法。 3.在子类的构造方法中,访问父类的构造方法。 */ public class zi extends Fu { int num = 20; public zi(){ super(); } public void methozi(){ System.out.println(super.num); } public void method(){ super.method(); System.out.println("子类方法"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)