谁能帮我解释实例化对象,与多态的问题。。。快晕死了

问题描述

Vectorx=newVector();Vectorx在内存中引用vector???x=newvector()实例化个vector放在X里???、但是多态abstractpublicclassShape2{3publicabstractintGetSides();4}5publicclass园:Shape6{7publicoverrideintGetSides()8{9return1;10}11}12publicclass方:Shape13{14publicoverrideintGetSides()15{16return2;17}18}19classProgram20{21staticvoidMain(string[]args)22{23Shapess=new方();为什么不是"方ss=new方()“????????????????????24Console.WriteLine(ss.GetSides());25Shapepp=new园();26Console.WriteLine(pp.GetSides());2728}

解决方案

解决方案二:
第一个问题:Vector()在C#里属于ArrayTypes,ArrayTypes属于ReferenceType。一个ReferenceType分为两个部分,一个有名字的句柄,在你的代码里就是x,一个没有名字的对象实例,就是newVector()。x本身并不是Vector()的实例,它只是指向一个Vector()的实例罢了。分配空间、创建对象实例和指向过程在这里由new完成。表达不行,不知道你明白了吗第二个问题:Shapess=new方();方ss=new方()都是可以的。
解决方案三:
第一个问题你最好将其看作指针.Vectorx=newVector();可以分解为三句话:1Vectorx;2newVector();//此时new出来的变量会被存放到一个未命名的指针下3x=未命名指针;//指向未命名的指针所指向的地址此时x便指向了new出来的变量的地址第二个问题:现在你只有"ss"类和"方"类,自然看不出有什么不一样的.但是如果你现在有了一个"我的方"类:publicclass我的方:Shape此时便可以通过Shape的指针指向"方"或者"我的方"类假如在"Shape"类中写了一个publicvoidDraw(){this.draw();}protectedvoiddraw(){Console.Writeln("Shape");}那么"方"或者"我的方"将会调用Draw()方法.如果你在"方"或者"我的方"中各实现了draw()方法,那么在调用Draw()的时候,它们将进入各自的draw()方法中,这样便实现了多态."方"类中的draw():protectedvoiddraw(){Console.Writeln("方");}"我的方"类中的draw():protectedvoiddraw(){Console.Writeln("我的方");}在两个类中不必重写Draw()这样,在Shape方1=new方();Shape我的方1=new我的方();那么调用方1.Draw();和调用我的方1.Draw();所得的结果分别是"方"和"我的方"

时间: 2024-09-12 13:44:05

谁能帮我解释实例化对象,与多态的问题。。。快晕死了的相关文章

哪位大神帮我解释一下这两句js代码

问题描述 哪位大神帮我解释一下这两句js代码 想问一下 var reader = new FileReader();和 reader.onload = function(){}是什么意思? 一般用var reader = new FileReader()的时候,new后面一般是函数方法,但是这里的FileReader():在上下文中并没有找到这个方法. var fileInput = document.createElement('input'); fileInput.setAttribute(

浅谈javascript构造函数与实例化对象

  JavaScript 中的构造函数和其它语言中的构造函数是不同的.通过 new 关键字方式调用的函数都被认为是构造函数.任何JavaScript 函数都可以用做构造函数,构造函数必须使用new 运算符作为前缀来创建新的实例. 前言--讲在前面 我想有很多以前很少接触后台编程语言的初学者朋友跟我一样,对javascript里面一系列的"名词"搞的一头雾水.好像大概知道讲的是什么,但其实理解的还是不清楚;我想,学习任何一种知识,首当其冲应该把最基本的名词解释搞清楚(知道它讲的到底是什么

可以帮我解释一下这段代码吗?

问题描述 <%@controllanguage="C#"autoeventwireup="true"inherits="Controls_Footer,WebUI_deploy"%>谁可以帮我解释一下这段代码不,我是初学的,不大懂~希望能详细些!! 解决方案 解决方案二:inherits="Controls_Footer,WebUI_deploy"表示继承language="C#":表示网页的编

求教大虾帮我解释下这串正则代码

问题描述 求教大虾帮我解释下这串正则代码 RegExp.quote = function (string) { return string.replace(/[-^$*+?.()|[]{}]/g, '$&'); }; 解决方案 1.[ -^$*+?.()|[]{} ],在[]是要匹配的特殊字符的集合: 2.对于String对象的replace方法,表达式不加入g,则只替换第一个匹配,如果加入g,则替换所有匹配: 3.$&;反斜杠应该是转义用的, 4.结合起来应该是把那里面的特殊字符转换成$

求大神帮我解释一下这个正则表达式

问题描述 求大神帮我解释一下这个正则表达式 如题,这是一个日期代码 var mts = date.match(/(/Date((d+))/)/); 解决方案 匹配 /Date(数字)/ 这种内容,数字是时间戳.一般这种字符串是服务器端序列化类为json字符串,当类属性为时间类型时会生成这种格式的内容,需要提取出这种内容,然后使用new Date(数字时间戳)生成js时间Date对象 如果匹配,mts分组如下 mts[1]//对应Date(数字) mts[2]//对应数组 解决方案二: 匹配 /D

浅谈javascript构造函数与实例化对象_基础知识

前言--讲在前面 我想有很多以前很少接触后台编程语言的初学者朋友跟我一样,对javascript里面一系列的"名词"搞的一头雾水.好像大概知道讲的是什么,但其实理解的还是不清楚:我想,学习任何一种知识,首当其冲应该把最基本的名词解释搞清楚(知道它讲的到底是什么,有助于我们更好的理解它.)即知其然知其所以然,这样对以后的进阶学习是很有帮助的.下面的简单讲一下我自己对这样一些看似不重要但又不得不清楚的知识点的理解.(若有出入,欢迎指正) 1.什么是构造函数 构造函数 ,是一种特殊的方法.主

PHP面向对象(OOP)编程入门教程————如何实例化对象?

我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了. 当定义好类后,我们使用new关键字来生成一个对象. $对象名称 = new 类名称(); <?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() { //这个人可以说话的方法 echo "这个人在说话&quo

php (十一) 面向对象 通过类实例化对象

1. 实例化对象       当定义好类后,我们使用new关键字来生成一个对象.  $对象名称 = new 类名称(): 示例:       [php]  <span style="color:#333333;"><?php   class Person   {   //下面是人的成员属性   var $name;     //人的名子       var $sex;      //人的性别   var $age;      //人的年龄   //下面是人的成员方法

javascript中使用new与不使用实例化对象的区别

  这篇文章主要介绍了javascript中使用new与不使用实例化对象的区别的相关资料,需要的朋友可以参考下 我们先来看个实例 ? 1 2 3 4 5 function Me(name,age,job){ this.name = name; this.age = age; this.job = job; } 请问这以下两种实例化对象方式有什么区别呢? ? 1 2 var mefun1 = new Me('fei','20','it'); var mefun2 = Me('fei','20','