zoukankan      html  css  js  c++  java
  • 抽象类

      abstract class MyBaseClass
        {
           public void print()
           {
               Console.WriteLine("抽象类中的public方法");
    
           }
           abstract public void PrintAcstract();
           virtual public void PrintVirtual() {
               Console.WriteLine("这是基类中的虚方法。");
           }
    
        }
        class MyClass : MyBaseClass
        {
            public sealed override void PrintAcstract()
            {
    
                Console.WriteLine("派生类中实现抽象类的抽象方法。");
            }
            public override void PrintVirtual()
            {
                //base.PrintVirtual();
                Console.WriteLine("这里重写了基类中的虚方法。");
            }
            public void Printddd() {
                base.PrintVirtual();
            }
           
        }
        class Program
        {
            static void Main(string[] args)
            {
                MyClass ss = new MyClass();
                ss.print();
                ss.PrintAcstract();
                ss.PrintVirtual();
                ss.Printddd();
    
    
                var dd = (MyBaseClass)ss;         
                dd.PrintVirtual();
    
                Console.WriteLine();
                Console.ReadKey();
    
            }
        }

    今天在学习抽象方法,抽象类,虚方法的时候突然想到前面看过的构造函数,想起来前面访问基类的方法有一种是先实例化一个派生类的对象,然后

    对派生类的对象进行强制转换就可以访问单基类的成员。

     B ss = new B();//派生类实例
     var dd = (A)ss;//转化基类实例对象


    但是对于抽象类(上面的代码) ,我竟然有这样的想法,虽然知道不合理但是还是尝试了一下,
                var dd = (MyBaseClass)ss;         
                dd.PrintVirtual();
    这段代码就是转换的,但是我不是很明白怎么理解这段代码:

    因为他没有什么报错,运行结果是派生类重写的结果,打上断点如图:

    发现并没有转换成功,说明对于抽象类这个不能实例化的东西来说,并不能将基类的实例转成功。所以仍然调用的是派生类的方法。
    这里理解的深度还不够,先做个笔记,希望有更好解释的筒子们给我留言。






     
     
  • 相关阅读:
    hdu 1164 Eddy's research I
    hdu 3794 Magic Coupon
    hdu 1460 完数
    hdu 1201 18岁生日
    求一组整数中所有素数之和
    备忘录
    c判断括弧是否匹配
    N!大整数阶乘问题
    计算一个人从出生到现在活了多少天
    java web.xml配置详解(转)
  • 原文地址:https://www.cnblogs.com/myloveblogs/p/5707502.html
Copyright © 2011-2022 走看看