Liam的C# 学习历程(三):类与对象、继承与多态
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Liam的C# 学习历程(三):类与对象、继承与多态,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1497字,纯文字阅读大概需要3分钟。
内容图文
在这一次的课程中,我们主要学习了C#中一些关于类的的具体应用和面向对象(OOP)的三大特点:封装(Encapsulation)、多态(Polymorphism)和继承(Inheritance)。接下来就让我们来实验一下学到的知识。
(一)This 关键字
this关键字(又称this指针)是类中所有非静态方法的隐藏指针。
调用this的方法有很多种,首先是在收到与成员变量同名的参数时,使用this可以避免混淆,就像下面过程所演示的:
成员函数SomeMethod收到了一个与成员变量hour同名的参数,通过this.hour的方法,很好的解决了名字混淆的问题。
还有一种用法是显式地调用一个类的方法和成员时可以用this指针,例如:
this.z = 5; //给一个成员变量赋值
this.Draw(); //调用一个成员方法
(二)使用静态成员:
静态成员不同于普通的成员变量,它是属于类本身而不是属于对象的一个变量,通常可以帮助我们来统计对象的数量。
从上图中我们可以看出,通过在构造函数中对count的值进行改变,我们可以达到对创造出的对象数量进行统计的目的。
(三)C#中参数的传递问题:
C#中对自己创建的Class对象默认用按值传递的方法传递,即使在没有写val的情况下也会以按值传递的方法传递。
如上图,就像我们展示了C#中传递参数的方式。
(四)关于new、virtual和override的一些问题:
如果我们有下面这样的一些代码,其中包含new、virtual和override,你可以在不看输出结果的情况下猜想出它的正确结果么:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
class A
{
public virtual void Fruit()
{
Console.WriteLine("Apple");
}
}
class B : A
{
public override void Fruit()
{
Console.WriteLine("Banana");
}
}
class C : B
{
public new virtual void Fruit()
{
Console.WriteLine("Orange");
}
}
class D : C
{
public override void Fruit()
{
Console.WriteLine("Pear");
}
}
class TestMe
{
static void Main(string[] args)
{
A objA = new D();
A objB = new B();
C objC = new D();
A objD = new A();
objA.Fruit();
objB.Fruit();
objC.Fruit();
objD.Fruit();
}
}
}
}
要是想要知道这些输出结果,很重要的一点就是要知道override会在任何情况下调用重写函数,无论是在子类型还是在父类型中。在理解了这个之后,我们就不难想出上面代码的输出结果了:
原文:http://www.cnblogs.com/tju-liuchang/p/4379644.html
内容总结
以上是互联网集市为您收集整理的Liam的C# 学习历程(三):类与对象、继承与多态全部内容,希望文章能够帮你解决Liam的C# 学习历程(三):类与对象、继承与多态所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。