虚函数表

简介: 父类package xuhanshubiao;public class Foo { void aFunction() { System.out.println("一年前"); bFunction(); } void bFunction() { System.

父类

package xuhanshubiao;

public class Foo {
    void aFunction() {
        System.out.println("一年前");
        bFunction();
    }
    void bFunction() {
        System.out.println("请修改爱人的名字");
    }
}

子类

package xuhanshubiao;

public class ProgramerA extends Foo{
    public static void main(String[] args) {
            Foo foo1 = new ProgramerA();
            foo1.aFunction();
            Foo foo2 = new Foo();
            foo2.aFunction();

        }
        void bFunction() {
            System.out.println("小丽");
        

    }
}

当运行时,f1,2输出的a是相同的:一年前

但是f1输出的b是小丽,f2:请修改爱人的名字

原因如下:

比如:

Parent p = new Child();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

 

目录
相关文章
|
24天前
|
编译器 C++ 索引
C++虚拟成员-虚函数
C++虚拟成员-虚函数
|
4月前
|
编译器 C++
C++的虚函数
C++的虚函数
29 0
|
4月前
|
设计模式 安全 C++
c++ 虚函数小结
c++ 虚函数小结
|
9月前
|
C++
多态-虚函数表
多态-虚函数表
48 0
|
9月前
多重继承的虚函数表
多重继承的虚函数表
35 0
|
11月前
|
存储 编译器 C++
对C++中的虚函数的说明
对C++中的虚函数的说明
26 0
|
存储 C++
C++ 虚函数,虚函数表
C++ 虚函数,虚函数表
|
编译器 C++
C++之虚函数
C++进阶之虚函数
82 0
|
存储 NoSQL 编译器
C++为什么要弄出虚表这个东西?
首先声明一点,虚表并非是C++语言的官方标准的一部分,只是各家编译器厂商在实现多态时的解决方案。另外即使同为虚表不同的编译器对于虚表的设计可能也是不同的,本文主要基于Itanium C++ ABI(适用于gcc和clang)。
154 0
C++为什么要弄出虚表这个东西?
|
弹性计算 算法 Ubuntu
C++ 虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。