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。
9115 0
打印文档即提示Print driver host for 32bit applications
|
JSON 监控 算法
TIDE.JS:三维空间数字化渲染引擎
为了满足我们三维空间渲染各个业务的需求,并且提供易用SDK方便第三方开发人员快速搭建自己的应用或平台,我们自研了TIDE.JS——一款组件化、轻量化、高性能、大规模的面向空间数字化应用的渲染引擎。
4093 0
TIDE.JS:三维空间数字化渲染引擎
|
关系型数据库 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
1432 0
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
8月前
|
人工智能 小程序 API
【一步步开发AI运动APP】九、自定义姿态动作识别检测——之关键点追踪
本文介绍了【一步步开发AI运动APP】系列中的关键点追踪技术。此前分享的系列博文助力开发者打造了多种AI健身场景的小程序,而新系列将聚焦性能更优的AI运动APP开发。文章重点讲解了“关键点位变化追踪”能力,适用于动态运动(如跳跃)分析,弥补了静态姿态检测的不足。通过`pose-calc`插件,开发者可设置关键点(如鼻子)、追踪方向(X或Y轴)及变化幅度。示例代码展示了如何在`uni-app`框架中使用`createPointTracker`实现关键点追踪,并结合人体识别结果完成动态分析。具体实现可参考文档与Demo示例。
|
监控 关系型数据库 分布式数据库
【PolarDB开源】PolarDB故障恢复机制:快速恢复与数据一致性保障
【5月更文挑战第22天】阿里云PolarDB的故障恢复机制保证了云数据库的高可用性和一致性。通过ROW快照备份和增量日志,实现秒级备份和恢复,确保数据安全。日志分析快速定位故障,启用备用实例实现快速恢复。分布式事务和强一致性读等技术保障数据一致性。这套全面的解决方案使PolarDB在云原生数据库中表现出色。
853 10
|
JSON 数据可视化 IDE
R
R
1268 0
|
Linux Ubuntu
|
网络协议 网络虚拟化 数据安全/隐私保护
路由与交换系列之NAPT特性与配置实践
• 掌握NAPT的原理 • 掌握NAPT在企业网络中的应用 • 掌握NAPT的配置方式
3341 1
路由与交换系列之NAPT特性与配置实践