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()从新调用了一下父类的方法。

相关文章
|
3月前
|
Java 编译器
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
|
4月前
|
设计模式 存储 Java
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
JavaSE——面向对象高级二(2/4)-final关键字、常量、抽象类(认识抽象类、抽象类的好处、应用场景-模板方法设计模式)
23 0
|
4月前
|
Java
JavaSE——面向对象高级二(4/4)-接口的其他细节-三个新方法(默认方法、私有方法、静态方法),接口的多继承
JavaSE——面向对象高级二(4/4)-接口的其他细节-三个新方法(默认方法、私有方法、静态方法),接口的多继承
35 0
|
5月前
|
Java 编译器
【JAVA面向对象编程】--- 探索子类如何继承父类
【JAVA面向对象编程】--- 探索子类如何继承父类
34 0
【JavaSE】继承和多态重点语法知识汇总
【JavaSE】继承和多态重点语法知识汇总
【JavaSE】继承和多态重点语法知识汇总
|
Java
Java面向对象之继承
Java面向对象之继承
56 0
|
安全 Java 编译器
教你精通JavaSE之第八章、继承和多态
前提:必须在子类中使用,才能调用父类的属性或行为1. super . 成员变量2. super . 成员方法3. super ( ) 调用父类的构造方法。
44 0
|
Java 程序员
JavaSE/封装、继承、多态
JavaSE/封装、继承、多态
|
Java
【Java面向对象】继承的认识与实现(1)
【Java面向对象】继承的认识与实现(1)
83 0
|
Java
Java面向对象—继承
Java面向对象—继承
76 0