学习目标:
1.通过案例来学习接口2.学习接口的注意事项
学习内容:
1.通过接口来实现一个播放器播放视频和音乐两种类型的资源2.补充关于接口的注意事项
代码分享:
using System;
namespace Learn.Tencent.@interface
{
public interface IPlayer
{
void ready();//准备播放
void start();//开始播放
void pause();//暂停播放
void proceed();//继续播放
void stop();//结束播放
}
}
using System;
namespace Learn.Tencent.@interface
{
public class MusicPlayer:IPlayer
{
public MusicPlayer()
{
}
public void pause()
{
Console.WriteLine("音乐暂停播放");
}
public void proceed()
{
Console.WriteLine("音乐继续播放");
}
public void ready()
{
Console.WriteLine("音乐准备播放");
}
public void start()
{
Console.WriteLine("音乐开始播放");
}
public void stop()
{
Console.WriteLine("音乐停止播放");
}
}
}
using System;
namespace Learn.Tencent.@interface
{
public class VideoPlayer:IPlayer
{
public VideoPlayer()
{
}
public void pause()
{
Console.WriteLine("视频暂停播放");
}
public void proceed()
{
Console.WriteLine("视频继续播放");
}
public void ready() {
Console.WriteLine("视频准备播放");
}
public void start()
{
Console.WriteLine("视频开始播放");
}
public void stop()
{
Console.WriteLine("视频停止播放");
}
}
}
using System;
namespace Learn.Tencent.@interface
{
public class Tencent
{
//腾讯播放器
public IPlayer Player;
public Tencent(IPlayer player)
{
this.Player = player;
}
static void Main(string[] args)
{
MusicPlayer m_Player = new MusicPlayer();
VideoPlayer v_Player = new VideoPlayer();
Tencent t_m = new Tencent(m_Player);
Tencent t_v = new Tencent(v_Player);
t_m.Play();
t_v.Play();
}
public void Play()
{
this.Player.ready();
this.Player.start();
this.Player.pause();
this.Player.proceed();
this.Player.stop();
}
}
}
注意事项:
- 接口是引用类型,我们不能直接通过类对象的成员来访问接口,然后我们可以把类对象的强制转换成接口类型来过去指向接口的引用。
- as运算符可以避免强制转换,同时避免出现转换出错。可以将类对象转换成接口类型。
- 可以实现重复的接口方法,比如接口A和接口B都有方法C,那么类D实现接口A和B,只需要实现一次D方法就可以。
- 派生成员作为实现,假设父类Base中有方法Print,接口A中也申明了方法Print,子类C继承了父类,也继承了A,但是没有显示的实现Print,但是编译并不报错,因为子类中已经包含了父类中Print的实现,也就相当于实现了接口的方法。
学习总结
- 总体来说,C#中的接口和Java中的接口非常相似,思想都相同
- 在以后的编程中,接口会用的非常多。