对方法继承的深入学习

重写继承方法与非重写继承方法的区别:

c#:

复制代码
using System;
using System.Collections.Generic;
using System.Text;

namespace Test1
{
    class A
    {
        public virtual void Func1()
        {
            Console.WriteLine("A - Func1");
        }

        public void Func2()
        {
            Console.WriteLine("A - Func2");
        }
    }

    class B : A
    {
        public override void Func1()
        {
            Console.WriteLine("B - Func1");
        }

        public void Func2()
        {
            Console.WriteLine("B - Func2");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            A a = b;
            a.Func1();
            b.Func1();
            Console.WriteLine("-------------------------");
            a.Func2();
            b.Func2();
        }
    }
}
复制代码

c++:

复制代码
// Test2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>

using namespace std;

class A
{
public:
    virtual void Func1()
    {
        cout<<"A - Func1"<<endl;
    }

    void Func2()
    {
        cout<<"A - Func2"<<endl;
    }
};

class B : public A
{
public:
    void Func1()
    {
        cout<<"B - Func1"<<endl;
    }

    void Func2()
    {
        cout<<"B - Func2"<<endl;
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    B* b = new B();
    A* a = b;
    a->Func1();
    b->Func1();
    cout<<"---------------------------"<<endl;
    a->Func2();
    b->Func2();
    return 0;
}
复制代码

输出结果:

 

可见:

对重写继承方法,父类和子类的对象均执行子类重写的方法;

对非重写继承方法,父类和子类执行各自的方法。

posted @   广阔之海  阅读(228)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示