对方法继承的深入学习

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

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;
}

输出结果:

可见:

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

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

时间: 2024-07-31 16:22:12

对方法继承的深入学习的相关文章

“jquery中each方法和选择器”的学习笔记

<head> <title></title> <script src="jquery-1.4.2.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { //alert($("div").text()); //对数组元素使用匿名函数进行逐个处理.

PHP-静态方法继承等分析

<?php class A { const CONST_NAME = 'A'; public static $static_name = 'A'; public static $static_name_no_rewrite = 'A'; private static $_instance; public static function static_func() { echo 'A'; } public static function static_func_no_rewrite() { ech

Java方法继承、方法重载、方法覆盖小总结

转自:http://blog.csdn.net/cdsnmdl/article/details/3968688 ———————————————————————————————————— 1.方法继承:利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类. 当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量个方法 在不同包时继承public/protected级别的变量和方法. 2.方法重载:如果有两个方法的方法名相同,但

compass typography 排版 常用排版方法[Sass和compass学习笔记]

Bullets 用来定义ul li 相关的样式 no-bullet  关闭 li的默认样式 那个小圆点 no-bullets 作用域ul 调用no-bullet 函数 不过用了reset 后 默认没有小圆点了 pretty-bullets($bullet-icon, $width, $height, $line-height, $padding) @mixin pretty-bullets($bullet-icon, $width: image-width($bullet-icon), $hei

js方法继承

还是原来的味道,原来的配方,我们先来了解你这让你登上山顶的板砖(有些是个人想法和方法) 第一步.我们需要知道的是你定义的方法都会有一个prototype(用来存放公共的属性和方法),而这个原型指向一个原型对象.原型对象中又存在constructor和__proto__.方法(如图一) 图一 第二步.你需要知道实例化(new)后会产生一个__proto__(可以理解为__proto__取代了prototype的位置并指向了原型对象),如图二 <script> function a(){ } va

No2_3.接口继承多态_Java学习笔记_多态

多态: 1 /** 2 * 3 * @author 作者:sunshine 4 * @date 创建时间:2016年7月4日 下午5:22:19 5 */ 6 7 class Calculate{ 8 final float PI=3.14f; 9 //求圆形的面积 10 public float getArea(float r){ 11 float area=PI*r*r; 12 return area; 13 } 14 //求矩形的面积 15 public float getArea(flo

JAVA学习_零基础学习JAVA方法_零基础学习JAVA思路

在学习JAVA前,对于一个真正初学者(也就是从零开始学习JAVA人员)的一个问题:什么是JAVA,然后才是怎么学习JAVA?JAVA是sun microsystems在1995年推出的高级编程语言,其分为Java SE.Java EE.Java ME三大体系,而JAVA SE是JAVA的基础,继JAVASE之后是JAVAEE,JAVA ME.JAVASE是JAVAEE的基础,Servlet.JSP是框架的基础.数据库方面个人建议学习oracle,当然其它的像 MySQL,MSSQL,都可以,只要

No2_1.接口继承多态_Java学习笔记_接口

接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象的依存关系: 4.接口:Java中类可以实现多个接口,被用来建立类与类之间的标准: ***接口***1.接口的目的:Java语言只支持单继承,即一个类只能有一个父类.实际应用中,经常需要多继承解决问题,为解决该问题,提供接口实现类的多重继承:2.接口定义:与类的定义类似,接口的声明和接口体:[修饰符

扩展方法以及LinQ的学习

我们今天学习的内容其实还是蛮多的,学习了自动属性,扩展方法,复习初始化器,以及LinQ的一些方法,其实感觉有些还是很熟悉的,在前面的学习过程中有时间感觉学习的知识知道了怎么使用,但是还没有在项目中使用,做的习题似乎意义不大,现在依旧如此,感觉仅限于知道怎样使用.很想做一个小小的项目来熟悉下学习的知识...下面就总结下今天学习的内容. 一.自动属性 private int productid; public int Productid { get { return productid; } set