于C#处看面向对象

时间:2022-03-12 17:23:58

    终于又到了写代码的阶段,感觉甚好啊!

最近学习C#,每开始一门课程总要先学面向对象,VB中,软工中,连UML都是,C#也不例外。面向对象的思想无处不在,下面再从C#中看面向对象。当然像封装啊、继承啊、实例化之类的名词我们已经接触过N次了,不过每次我都会先温习一下这些含义的,而每每都会温故而知新。

    让我先从类说起:动物是一个类,老虎也是一个类。但是我们把动物成为抽象类,那么怎么区分呢?这样讲,你可以在现实中找到一只老虎,说明老虎这个类是可以实例化的;可是你能找到一个叫做“动物”的动物吗?现在,抽象类,你懂的?上面提到的这一只老虎就是一个对象了,很多只老虎具有相同的特征,我们管它叫做属性,这些老虎能做很多相同的事情,在这个领域我们管它叫做方法,把这些具有共同的属性和方法的老虎抽象出来得到老虎这个类。现在类、对象、实例化,包括抽象类你都懂了,在不同的情况下类有不同的种类,如基类和派生类等。我们来看看他们之间的关系。 

     首先说继承,我国是有继承法的,所以在类与类的继承当中也是有“法”可依的。密封类是不能被继承的,密封类主要是为了防止第三方未经授权的扩展自身的类。一般情况下呢,可以这样理解继承,我来举个小例子。

1.由不在同一直线上的三条线段首尾顺次连接所组成的封闭图形叫做三角形

2.这是一个等腰的三角形

3.这是一个等腰的由不在同一直线上的三条线段首尾顺次连接所组成的封闭图形

 1父类

↓继承,省去了3的麻烦。

 2子类

定义类和对象等时要用的publicprivateprotectedinternal都是访问修饰符,它们是控制访问权限的,而被protected修饰的类只能被有继承关系的类访问。

    也可以说,继承是子类使用父类的方法,多态是父类使用子类的方法。那么问题又来了,什么叫多态?同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态。我觉得还是用一小段代码来说明更简单易懂。

 

   class Program
{
static void Main(string[] args)
{
sharp ss = new 圆();//用多态来实现
Console.WriteLine(ss.getsides());//自动判断如何调用合适的方法
}
}
abstract public class sharp
{
public abstract int getsides();
}
public class 圆 : sharp
{
public override int getsides()
{
return 1;
}
}
public class 方 : sharp
{
public override int getsides()
{
return 2;
}
}
}
看一下返回结果!

于C#处看面向对象

 

    这里有编译时的多态性和运行时的多态性,分别通过重载和复写虚成员实现(C#中)。重载的概念在明天的视频中才会讲到,继续学习中。 

    面向对象的概念中还剩封装和接口,接口是更抽象的抽象类,只包含方法的声明,不包含任何代码,这样类与类间就实现了低耦合。这就离不开封装,封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,良好的封装能够减少耦合,类内部的实现可以*地修改。

   在思想上能够将面向对象统一,各个语言中就融会贯通了。