继承和接口
一、继承和接口分别是什么
继承是什么,官方的原话是,继承(以及封装和多态性)是面向对象的编程的三个主要特征之一。 通过继承,可以创建新类,以便重用、扩展和修改在其他类中定义的行为。
就个人理解就是通过继承可以创建子类,然后重写父类方法,在父类的基础上拓展新方法。同时由于一个父类可以由多个子类继承能实现,使用一个父类实现多个子类的方法来实现重用
接口又是什么,官方原话说的很抽象,接口包含非抽象 class 或 struct 必须实现的一组相关功能的定义。
通俗的讲,就是接口就是包含必须实现成员方法,因为接口不能声明实例数据,如字段、自动实现的属性或类似属性的事件(比如声明int a;这种都是错误的)。
总结继承是为了实现类的的抽象,而接口是实现了方法的抽象
二、代码示例
1.接口代码示例
C#代码如下(示例):
动物接口
using System;
using System.Collections.Generic;
using System.Text;
namespace TryLearnInterface
{
public interface IAnimal
{
public void Behavior();
}
}
人类接口
using System.Collections.Generic;
using System.Text;
namespace TryLearnInterface
{
public interface IPerson
{
public void Say();
}
}
男人类继承人类接口和动物接口
using System;
using System.Collections.Generic;
using System.Text;
namespace TryLearnInterface
{
class Man:IPerson,IAnimal
{
public void Say()
{
Console.WriteLine("我是男人");
}
public void Behavior()
{
Console.WriteLine("我是动物,也是男性");
}
}
}
女人类继承人类接口
using System;
using System.Collections.Generic;
using System.Text;
namespace TryLearnInterface
{
public class Woman:IPerson
{
public void Say()
{
Console.WriteLine("我是女人");
}
}
}
主类输出
using System;
namespace TryLearnInterface
{
class Program
{
static void Main(string[] args)
{
IPerson man = new Man();
IPerson woman = new Woman();
man.Say();
woman.Say();
Console.ReadKey();
}
}
}
输出结果
从输出结果看,通过接口实现了对应方法,接口的主要作用便在于此,实现模拟结构的继承,也就是只要继承了接口就必然会实现接口的方法。同时C#本身不支持类的多重继承,而接口支持
2.继承代码示例
继承代码如下(示例):
父类
using System;
using System.Collections.Generic;
using System.Text;
namespace TryInherit
{
public class Parent
{
public string name="我是父类的名称,我被继承了";
public virtual void HelloParent()
{
Console.WriteLine("父类方法执行了");
}
}
}
子类
using System;
using System.Collections.Generic;
using System.Text;
namespace TryInherit
{
public class Son:Parent
{
public override void HelloParent()
{
Console.WriteLine("我是子类,我重写的父类");
}
public void SonSay()
{
Console.WriteLine("我是父类方法的拓展,我是儿子");
}
}
}
主类输出
using System;
namespace TryInherit
{
class Program
{
static void Main(string[] args)
{
Parent p = new Parent();
Son s = new Son();
//通过子输出父的字段
Console.WriteLine(s.name);
//父的方法
p.HelloParent();
//子重写父的方法
s.HelloParent();
//子对父方法的拓展
s.SonSay();
Console.ReadKey();
}
}
}
结果
从以上不难看出子父继承的基础应用
总结
写这篇比较基础的文章主要是想探究为什么要使用接口,同时也明确一下接口和继承结合起到的作用,如有不对之处还请指出。