JavaSE碎碎念:抽象类继承被子类继承之后方法调用关系

简介: JavaSE碎碎念:抽象类继承被子类继承之后方法调用关系


public class TestAbstract {
    public static void main(String[] args) throws Exception {
        Son son = new Son();
        Object aaa = son.action("aaa");
        System.out.println(aaa.toString());
    }
}
abstract class Father{
    public Object action(Object object) throws Exception {
        object = actionBP(object);
        System.out.println("oo father");
        return object;
    }
    abstract protected Object actionBP(Object object) throws Exception;
}
class Son extends Father{
    @Override
    protected Object actionBP(Object object) throws Exception {
        return "shit";
    }
}

抽象父类,实现子类,测试类。

测试类中创建子类对象,使用子类对象可以执行调用抽象类中的非抽象方法(这样的方法是提取共性,省的子类一个一个的去重写,冗余),抽象类中的非抽象方法还可以调用父类中的抽象方法,当然真正执行的一定是拿着子类的对象去调用从父类中继承的方法,方法执行之后,调用的父类中的抽象方法也会变成调用的是子类中的重写的方法。

public class TestAbstract {
    public static void main(String[] args) throws Exception {
        Son son = new Son();
        Object aaa = son.action("aaa");
        System.out.println(aaa.toString());
    }
}
abstract class Father{
    public Object action(Object object) throws Exception {
        object = actionBP(object);
        System.out.println("oo father");
        return object;
    }
    abstract protected Object actionBP(Object object) throws Exception;
}
class Son extends Father{
    @Override
    public Object action(Object object) throws Exception {
        super.action(object);
        object = actionBP(object);
        System.out.println("oo yeah");
        return object;
    }
    @Override
    protected Object actionBP(Object object) throws Exception {
        return "shit";
    }
}

这种情况下,子类把父类的非抽象方法都给重写了,这样就没啥疑问了,调用的都是子类中的方法,只不过子类方法通过super.action()从新调用了一下父类的方法。

相关文章
打印文档即提示Print driver host for 32bit applications
主机win7 32位系统,打印一切正常,共享打印机后,客户机为win7 64位系统连接该共享打印机,连接成功,驱动安装正常,x64驱动,客户机打印测试页正常,但打印文档即提示Print driver host for 32bit applications。
9008 0
打印文档即提示Print driver host for 32bit applications
|
关系型数据库 MySQL Linux
【Linux环境】centos安装mysql5.7.26报 ./mysqld: error while loading shared libraries: libaio.so.1: cannot op
【Linux环境】centos安装mysql5.7.26报 ./mysqld: error while loading shared libraries: libaio.so.1: cannot op
1210 0
|
开发框架 JavaScript 前端开发
Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
本文介绍了 Electron 33.0.0 版本的重要更新,包括核心组件的升级(Chromium、Node.js 和 V8),新增功能(如 app.setClientCertRequestPasswordHandler 和 View.setBorderRadius),重要改进和主要问题修复。建议开发者尽快升级,以享受更强大的性能和功能。
664 0
Electron 重大更新,33.0.0版本发布,带来多项新特性与改进!
|
JSON 数据可视化 IDE
R
R
1252 0
|
安全 网络协议 网络安全
2023 年度湖南省“楚怡杯“职业院校技能竞赛信息安全管理与评估赛项样题
2023 年度湖南省“楚怡杯“职业院校技能竞赛信息安全管理与评估赛项样题
|
机器学习/深度学习 自然语言处理 算法
【Python机器学习专栏】文本数据的特征提取与表示
【4月更文挑战第30天】本文探讨了文本特征提取与表示在机器学习和NLP中的重要性。介绍了词袋模型、TF-IDF和n-gram等特征提取方法,以及稀疏向量和词嵌入等表示方式。Python中可利用sklearn和gensim库实现这些技术。有效的特征提取与表示有助于将文本数据转化为可处理的数值形式,推动NLP和机器学习领域的进步。
598 0
|
Linux Ubuntu
|
网络协议 网络虚拟化 数据安全/隐私保护
路由与交换系列之NAPT特性与配置实践
• 掌握NAPT的原理 • 掌握NAPT在企业网络中的应用 • 掌握NAPT的配置方式
3245 1
路由与交换系列之NAPT特性与配置实践
|
存储 安全 Linux
网络安全——SSH的两种远程登录方法详解
最近在打靶场的过程中发现有时候SSH无需密码就可以直接登陆,这确实是触及到我的盲区了,上网查了一下才知道这原来是ssh的秘钥登录,花了一整天才弄懂,所以写下这篇博客,希望能帮助到大家
912 0
网络安全——SSH的两种远程登录方法详解