一个关于C#的问题,在线等!

来源:百度知道 编辑:UC知道 时间:2024/05/05 18:21:31
请问一下这段话怎么理解?
普通类不能够直接产生一个对象,但它可以用其他的普通类或组件类的方法产
生,而不是用new关键字来完成。如下面的例子,A和B为普通类对象,C为组
件类对象,D为一个普通类:
A=B.writeA();正确
A=C.writeA();正确
A =new D();不正确,普通类不能通过new的方法产生。
我觉得第三行代码也没有什么问题啊。比如
class A{}
A a = new A();
这是一个很典型的普通类对象通过new方法产生的例子啊。希望哪位高人能详细指点。希望能再解释一下为什么组件类就可以那样而普通类就不能那样呢?如果回答详细的话追加50分。谢谢啦。

你理解错了,那个A类和D类虽然都是普通类,但是是不同的类啊,我们来打个比喻,有两个类,猫类A和狗类B都是普通类,然儿猫类A能等于new 狗类B吗?不能吧,因为他们本来就是不同的类别吗,使用new 关键字生成的对象是同一个类的,猫类A A=new 猫类A 这样才是正确的。理解了吗?

不知道中文版里面普通类指的是不是“static”类,我当初用的英文教材不太清楚这个叫法。 如果是static类那确实不能用new来产生,因为它本身就可以作为一个实例来应用,不用再新建实例就可以调用其中的方法。

计算机 js = new 计算机() 正确
计算机 js = new 电冰箱() 错误
想同类型的才能new
类ClassA 类ClassB
ClassA a = new ClassA();正确
ClassA a = new ClassB();错误

你要看题 A B 哪个是static就是对的

A=B.writeA();正确
A=C.writeA();正确
A =new D();

A=new d();对不对取决于A是什么类型的变量,如果之前声明A为D类型,就不会出错,D A=new D();
而如果之前声明A为非D类型,则这种赋值不能成立

好像子类可以new 为父类

具体你看看他们的讨论吧···这个我看的有点乱