方法重写,隐藏在子类父类中的各种调用实践

简介: 一.子类和父类方法之间的关系 1.当子类和父类有方法完全相同的方法 namespace ConsoleApplication2 { class Program { static void Main(string[] args) { ...

一.子类和父类方法之间的关系

1.当子类和父类有方法完全相同的方法

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            A a = new A();
            A c = new B();
            b.Show();
            a.Show();
            c.Show();
            Console.Read();
        }
    }

    public class A
    {
        public void Show()
        {
            Console.WriteLine("执行A的Show方法");
        }

    }

    public class B : A
    {
        public void Show()
        {
            Console.WriteLine("执行B的Show方法");
        }
    }
}

这里先给出运行的结果:

由此可以得出结论:

①当子类和父类的方法完全相同时,调用的时候取决于声明的类型(“=”左边),而不是实例化的类型。

②这样情况应该尽量避免,编译器会警告,但是不会妨碍程序的执行。

③当有同名的字段时,同样使用new来消除警告

 可以使用new关键字消除警告,但是运行结果一样。

2.virtural方法和override方法调用

修改代码如下:

View Code
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            A a = new A();
            A c = new B();
            b.Show();
            a.Show();
            c.Show();
            Console.Read();
        }
    }

    public class A
    {
        public virtual void Show()
        {
            Console.WriteLine("执行A的Show方法");
        }

    }

    public class B : A
    {
        public override void Show()
        {
            Console.WriteLine("执行B的Show方法");

        }

    }
}

执行结果:

由此可以知道:重写以后,调用哪个类的方法取决于实例化的类型(“=”右边)或者是转换后最终的类型

 

相关文章
|
12月前
用原型链的方式写一个类和子类
用原型链的方式写一个类和子类
33 0
C# 继承类中(父类与子类)构造函数的调用顺序
C# 继承类中(父类与子类)构造函数的调用顺序
|
4月前
|
Java
子类的父类和接口具有共同的方法
子类的父类和接口具有共同的方法
32 7
原型链继承: 原理:将父类的实例作为子类的原型
原型链继承: 原理:将父类的实例作为子类的原型
类的继承和重写方法
类的继承和重写方法
71 0
|
设计模式 安全 Java
Python面向对象、继承的基本语法、单继承和多层继承、子类重写父类的同名方法、子类调用父类的同名方法、继承中的 init 、 多继承、私有权限、类属性、类方法、静态方法、多态、鸭子类型
称为类 B 继承类 A 特点: B类的对象可以使用 A类的属性和方法 优点: 代码复用.重复相同的代码不用多次书写. 名词: 类A: 父类 基类 类B: 子类 派生类 2. 单继承和多层继承[理解] 单继承: 如果一个类只有一个父类,把这种继承关系称为单继承 多继承: 如果一个类有多个父类,把这种继承关系称为多继承 多层继承: C–> B --> A 3. 子类重写父类的同名方法[掌握] 重写: 子类定义和父类名字相同的方法. 为什么重写: 父类中的方法,不能满足子类对象的需求,所以
534 1
Python面向对象、继承的基本语法、单继承和多层继承、子类重写父类的同名方法、子类调用父类的同名方法、继承中的 init 、 多继承、私有权限、类属性、类方法、静态方法、多态、鸭子类型
|
开发者 Python
子类重写父类方法|学习笔记
快速学习子类重写父类方法,先来介绍子类重写父类方法。多态其实就是一种子类重写父类的方法。
|
Java C++
【C++ 语言】面向对象 ( 继承 | 重写 | 子类调用父类方法 | 静态多态 | 动态多态 | 虚函数 | 纯虚函数 )(二)
【C++ 语言】面向对象 ( 继承 | 重写 | 子类调用父类方法 | 静态多态 | 动态多态 | 虚函数 | 纯虚函数 )(二)
213 0