unity 3D C#编程之抽象类与接口

一、绪论

  unity 3D主要是以C#语言为基础开发,据说Unity 3D有80%的开发者在使用C#。C#以其强大的逻辑编程能力,被unity开发的大型项目采用。虽然C#万般好,但是用好C#首先要用好面向对象。当年大学里学过Java,但是基本上就是混吃等死的水平。现在在学习unity的时候需要把面向对象技术重新再学习一次,当然是以C#语言为基础。

=========================小框架没写完,先写一部分这个博客=================================

二、抽象类

public abstract class parent{

    public abstract string getName();
}

一个简单的抽象 类。我们很多时候在编写基类的时候不想去考虑基类的方法实现,只想去定义一些方法,等到具体用的时候再去实现,这时候就可以使用抽象类。这就好比你家族有门手艺,但是不告诉你怎么做,只告诉你是这样子的,你需要自己去想办法做出来。这就是抽象类。在编写的时候需要将类的定义前加上abstract关键字,在方法名前面也加上关键字,保证抽象类的结构。

抽象类的使用的话,子类需要去实现抽象类定义的方法,不然这门手艺就失传了。当然在编程中,你必须要去实现这些方法。

public class clild1:parent{

    public override string getName ()
    {
        return "xiaozhang";
    }
}
public class clild2:parent{
    
    public override string getName ()
    {
        return "xiaoli";
    }
}

两个孩子继承了这门手艺,并通过自己独特的方法实现了。

抽象类通过这种方法可以限定住这一类的属性。

三、接口

接口和抽象类一样,我们在定义接口的时候希望只定义接口的名称或者说方法,但是不定义方法的内容。比方说,水管有很多种,但是都有一个共同的方法,一个共同的接口就是有入水口和出水口。那么在定义水管的接口的时候我只定义有个出水口和有个进水口,但是口径大小和样式我不定义,具体定义留给具体的水管。

public interface WaterPipe{
    public int InWater();
    public int OutWater();
}

但是事实上,我只定义类接口,那么不是水管有入水口、出水口,其他的东西有这两种功能的都能继承这个接口,比如河流。

public class river:WaterPipe{
    public int InWater(){
        return 9;
    }
    public int OutWater(){
        return 9;
    }
}

在C#中,接口定义只是作为一种属性存在,而不是像类的继承那么严格。同一个类可以继承多个接口,但是只能继承一个父类。这就是只能有一个父亲,但是你可以有很多其他属性,比如精通物理,精通钢琴。

四、两者区别

抽象类和接口看起来还是相似很多的但是细细理解的话发现里面还是有很多不一样的。

这里把这些异同整理一下:

相同:

1、都能被继承

2、继承的类都必须将未实现的函数实现

3、只关注方法的定义,不关注方法的实现

差异:

1、一个子类可以继承多个接口,但是只能继承一个父类

2、抽象类在对象中只能表示一种对象,接口可以被很多对象继承

五、Unity3D中的使用

在Unity 3D中,实际上和C#使用相同,只是将不同的接口和抽象类使用合理能够帮助很好的管理游戏资源。

THISSKY出品,原文链接:http://www.cnblogs.com/zhuhongjongy/p/5648134.html