码迷,mamicode.com
首页 > Windows程序 > 详细

c#父类对象引用指向子类与方法重写

时间:2018-11-16 11:40:25      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:main   names   line   自动   自动调用   运行   ons   重写   ntc   

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace csharp_test
{
    class Parentclass
    {
        public Parentclass()
        {
            Console.WriteLine("this is parentclass‘s cunstructor");
        }

        public  void print()
        {
            Console.WriteLine("this is parent ‘s print");
        }
    }

    class Childclass : Parentclass
    {
        public Childclass()
        {
            Console.WriteLine("this is childclass‘s cunstructor");
        }

        public  void print()
        {
            Console.WriteLine("this is child ‘s print");
        }

        static void Main(string []args)
        {
            Parentclass p = new Parentclass();
            p.print();
            Parentclass c = new Childclass();
            c.print();
        }
    }
}

this is parentclass‘s cunstructor
this is parent ‘s print
this is parentclass‘s cunstructor
this is childclass‘s cunstructor
this is parent ‘s print
运行结果如上,可见,如果声明一个父类对象指向子类对象,会调用父类的方法。

如果将子类的print方法删除,仍然会调用父类的方法,但是如果删除父类的方法,就会报错。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace csharp_test
{
    class Parentclass
    {
        public Parentclass()
        {
            Console.WriteLine("this is parentclass‘s cunstructor");
        }

        public  void print()
        {
            Console.WriteLine("this is parent ‘s print");
        }
    }

    class Childclass : Parentclass
    {
        public Childclass()
        {
            Console.WriteLine("this is childclass‘s cunstructor");
        }

        public  void print()
        {
            Console.WriteLine("this is child ‘s print");
        }

        static void Main(string []args)
        {
            Parentclass p = new Parentclass();
            p.print();
            Childclass c = new Childclass();
            c.print();
        }
    }
}

this is parentclass‘s cunstructor
this is parent ‘s print
this is parentclass‘s cunstructor
this is childclass‘s cunstructor
this is child ‘s print

运行结果如上,可见,如果声明子类对象指向子类对象,会调用子类的方法。

如果删除了子类方法,那么就会自动调用父类的print方法。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace csharp_test
{
    class Parentclass
    {
        public Parentclass()
        {
            Console.WriteLine("this is parentclass‘s cunstructor");
        }

        public virtual void print()
        {
            Console.WriteLine("this is parent ‘s print");
        }
    }

    class Childclass : Parentclass
    {
        public Childclass()
        {
            Console.WriteLine("this is childclass‘s cunstructor");
        }

        public override void print()
        {
            Console.WriteLine("this is child ‘s print");
        }

        static void Main(string []args)
        {
            Parentclass p = new Parentclass();
            p.print();
            Parentclass c = new Childclass();
            c.print();
        }
    }
}

this is parentclass‘s cunstructor
this is parent ‘s print
this is parentclass‘s cunstructor
this is childclass‘s cunstructor
this is child ‘s print

结果如上所示,如果子类重写了父类的方法,那么尽管父类是指向子类的,但是仍然会调用子类的方法。

 

c#父类对象引用指向子类与方法重写

标签:main   names   line   自动   自动调用   运行   ons   重写   ntc   

原文地址:https://www.cnblogs.com/huangshizhou/p/9968269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!