继承的使用首先是为了简化我们的程序,避免同一性质的数据浪费过多的内存空间,同时也是为了更好的维护,就是当我们只想改变一个类中的数据时,就可以改变所有用到这个类的数据了。继承的使用是以类而言的,通过继承关系,一个类可以继承该基类所有成员数据和方法函数,当然该类也可以重新修改自己所继承的基类的方法等。类不支持多重继承,只能一个一个继承,例如:class Gezi:birdclass
这就是鸽子类继承鸟类的继承。而接口是可以多重使用的。public class GEzi,inteface1,interface2
这就是接口的多重使用,中间用逗号隔开。举个例子:比如鸟类的一般属性有羽毛,喙,爪子,以及飞行等,而鸽子不仅具有一般鸟类的属性,还具有自己独特的属性,当我们研究一些特定的鸟类时,如果重复定义这些相同的属性,既浪费了内存空间,又不利于后期维护。
下面首先先定义了一个基类,它包含一般鸟类所拥有的特性:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
class BIRD
{
private string feather;
private string length;
private float weight;
public string Feather
{
get { return feather; }
set { feather = value; }
}
public string Length
{
get { return length; }
set { length = value; }
}
public float Weight
{
get { return weight; }
set { weight = (float)value; }
}
public void FLY()
{
Console.WriteLine("我可以飞");
}
public void Eat()
{ Console.WriteLine("我可以吃"); }
public virtual void Speed()
//virtual关键字所代表的是虚方法,是可以被他的继承类改变重写的;
{
Console.WriteLine("这是鸟的速度");
}
}
}
又定义了两个类,鸽子类和大雁类,他们都继承鸟类的一般属性:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
class GEZI:BIRD
//这里是鸽子类继承鸟类的一般属性
{
public void SHOW()
{
Console.WriteLine("我可以秀");
}
public void SHIlu()
{
Console.WriteLine("我可以认路");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
class DAyan:BIRD
//这时大雁继承的鸟类的一般属性;
{
public void Flytosouth()
{
Console.WriteLine("我要往南飞");
}
public void Sleep()
{
Console.WriteLine("我可以冬眠");
}
public override void Speed()
//重写基类中的speed方法,使用override关键字;
{
Console.WriteLine("这时大雁的速度");
}
}
}
下面的是主函数中的调用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
class Program
{
static void Main(string[] args)
{
GEZI gezi = new GEZI();
gezi.Eat();//这时鸽子类继承的鸟类中的;
gezi.FLY();
gezi.SHOW();
gezi.SHIlu();
gezi.Speed();//这里调用的是基类中的虚方法;
gezi.Weight = 100;
float wei = gezi.Weight;
Console.WriteLine("鸽子的体重是:"+wei+"G");
Console.WriteLine("下面是大雁的");
DAyan dayan = new DAyan();
dayan.FLY();//这是大雁类继承的鸟类中的;
dayan.Eat();
dayan.Sleep();
dayan.Flytosouth();
dayan.Weight = 200;
float wei1 = dayan.Weight;
dayan.Speed();//这里是调用基类中重写的大雁的速度;
Console.WriteLine("大雁的体重是:"+wei1+"G");
Console.Read();
}
}
}
结果是:
上面就是继承的一些用法;
下面讲的是接口的一些用法:类与类之间叫做继承,类与接口之间叫做实现。接口中只能包含方法、属性等的声明,不能有数据变量,以及修饰符等。下面是定义了几个接口以及实现该接口的类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
interface Interface1
//这时接口1
{
void fun1();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
interface Interface2:Interface1
//接口与接口之间是可以实现的,这样2就有1的功能了;
{
void fun2();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
interface Interface3
//这是接口3;
{
void fun3();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
class Class1 : Interface2, Interface3
//接口的实现;
{
public void fun1()
{
Console.WriteLine("first") ;
}
public void fun2()
{
Console.WriteLine("second");
}
public void fun3()
{
Console.WriteLine("third");
}
}
}
以及最终的运行程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 继承和接口
{
class Program
{
static void Main(string[] args)
{
Class1 cla = new Class1();
cla.fun1();
cla.fun2();
cla.fun3();
Console.Read();
}
}
}
这里是结果:
以上就是类与类的继承,类与接口的实现功能的一些用法。