标签:调用 name 子类 writeName Student 父类 public string
在 父类 a = new 子类(),容易搞混。
这里动手写一下做个实验
先定义父类和子类
class Person { public string name; public string writeName() { name = "张三"; return "这是Person类的writeName:" + name; } }
class Student : Person { public int age; public string writeAge() { age = 12; return "这是Student类的writeAge:" + age; } }
直接输出
class Program { static void Main(string[] args) { Person stu = new Student(); Console.WriteLine(stu.GetType().Name); Console.WriteLine(stu.writeName()); } }
在调用的时候会发现,stu的类型虽然是Student子类,但是stu.只能得到继承自父类的属性name和方法writeName,子类自己的属性和方法无法访问,这说明声明的是什么类型,得到的就是什么类型。
结果如下:
这种情况如果想调用子类的writeName,需要将父类的writeName声明为抽象方法或者虚方法,在子类中重写。
class Person { public string name; public virtual string writeName() { name = "张三"; return "这是Person类的writeName:" + name; } } class Student : Person { public int age; public override string writeName() { name = "李四"; return "这是Student类的writeName:" + name; } public string writeAge() { age = 12; return "这是Student类的writeAge:" + age; } }
运行结果如下
总结一下:
父类 a = new 子类()时,a是类型是子类,但是只能调用父类的属性和方法,但如果父类中的方法在子类中重写了,那么调用的就是子类的方法。
标签:调用,name,子类,writeName,Student,父类,public,string 来源: https://www.cnblogs.com/luyShare/p/16492566.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。