当前位置:编程学习 > C#/ASP.NET >>

一个关于类实例化的基础问题

小弟初学c#,问个关于类实例化的问题.
一个类要实例化必须先实例化它的基类,一层一层,直到system.Object,又说抽象类不可以实例化,
那如果在实现一个类a,它继承与B,b为抽象类,那B怎么实例化啊,不是说一直要到Object吗?那不是中途中断了? --------------------编程问答-------------------- 晕直接实例化类B就行
用哪个类就实例化哪个~抽象类是不能被实例化的~
--------------------编程问答-------------------- 这个我知道,
比如我要实例化a,b是它的基类,
那么在实例化A的时候,.net是会去实例化B的啊 --------------------编程问答-------------------- 路过~~ --------------------编程问答-------------------- 首先你要明白继承的意义,子类继承基类,从面向对象的思想来说应该就是继承基类的属性和行为,从纯编程(写代码)基本目的就是为了实现代码重用!
对于,子类的实例化,并不会作用于基类,因为子类的继承,已经把父类的所有属性和行为据为己有,如同copy.

--------------------编程问答-------------------- 这个我知道, 
比如我要实例化a,b是它的基类, 
那么在实例化A的时候,.net是会去实例化B的啊


classA aa=new classA();
这样只实例化A并没实例化它的基类B啊~
但是B的东西可以被对象aa引用了~ --------------------编程问答--------------------  class a
    {
        public a()
        {
            Console.WriteLine("aaaaaa");
        }
        
    }
    class b : a 
    {
        public b()
        {
            Console.WriteLine("bbbbbb");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            b my = new b();
            Console.ReadKey();
        }
    }

这段代码的输出结果是
aaaaaa
bbbbbb

证明基类的构造函数还是会被调用的啊 --------------------编程问答-------------------- 试试如果把类A换成抽象类,看看是否还会执行类A的构造函数 --------------------编程问答-------------------- 构造函数是自动运行的~所以根本不用实例化~
这里子类会自动运行基类的构造~但并没实例化啊~

其实别的类也执行基类的构造,只不过像Object这样的类构造很可能为空~(具体我也没看过哈哈~) --------------------编程问答-------------------- 但书上怎么有这样一句原话:一个类要实例化必须先实例化它的基类 --------------------编程问答-------------------- 很晕~你上面自己写的程序也没实例化基类a啊
只是实例化了子类b,那么它还不是一样正常调用了?

这样,就和书上冲突了呵呵~什么破书啊?
偶给你推荐一本
《概念到代码》
韩磊 戴飞翻译的
《Bengin C# Object From Concepts to Code》 --------------------编程问答-------------------- 个人觉得用哪个类就实例化那个类就行
这和继承关系并不大~
不用先实例化基类再实例化子类,直接实例化子类来用就可以了,只不过子类会自动调用基类的构造函数就是了~
但抽象类是不能实例化的~ --------------------编程问答-------------------- C#入门经典(第3版)啊,这个还是权威吧.
原话是:"要实现派生的类,必须实例化它的基类,要实例这个基类,必须实例这个基类的基类.这样一直实例到System.Object为止"

这怎么说啊.
--------------------编程问答-------------------- 高手说明一下啊 --------------------编程问答-------------------- 我认为应该是这样的理解的

派生类在执行构造函数之前必定先调用基类的构造函数.

--实例化一个类和调用一个构造函数还是有很的区别的.


c#只说抽象类不能实例化一个类有没说不能调用抽象类的构造函数 --------------------编程问答-------------------- :"要实现派生的类,必须实例化它的基类,要实例这个基类,必须实例这个基类的基类.这样一直实例到System.Object为止" 


是不是翻译有问题?我语言能力有限,感觉像是绕口令~

要按你的理解你自己做的例子根本实现不了~ --------------------编程问答-------------------- 继续顶这个问题.谁能给一个详细的解释给小弟啊 --------------------编程问答-------------------- Mark --------------------编程问答--------------------     我想我理解你的意思```
    首先```实例化一个子类对像时```它首先会默认调用基类的构造函数(当基类中没有定义构任何构造函数时),然后才调用本身的构造函数```` 就比如你写的这些代码``
class   a 
        { 
                public   a() 
                { 
                        Console.WriteLine("aaaaaa"); 
                } 
                
        } 
        class   b   :   a   
        { 
                public   b() 
                { 
                        Console.WriteLine("bbbbbb"); 
                } 
        } 
        class   Program 
        { 
                static   void   Main(string[]   args) 
                { 
                        b   my   =   new   b(); 
                        Console.ReadKey(); 
                } 
        } 

   而C#中有规定,抽像类不能够实例化,然后你就假设a是抽像类的话,当实例化b时,a不也就`````````````

   楼主想说的应该是这个意思吧?!~之前我也没有注意到这些``听你这么一说似乎也觉得有些矛盾,认真想想``觉得应该是像14楼说的那样吧``调用跟实例是有区别的``不直接new抽象类就得````````这也是我自己的理解了``还是想听听高手的指点````` 继续关注中````````` --------------------编程问答-------------------- 可能是分太少了.大牌门都不来.不过我实在没分加了 --------------------编程问答-------------------- 18楼的就是我说的意思 --------------------编程问答-------------------- 乱七八糟的
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,