c#之接口
程序员文章站
2022-06-13 21:01:54
...
普通接口
using System;
namespace 接口
{
/// <summary>
/// 接口的使用
/// </summary>
//定义接口
/*
*编写接口时
* 接口的访问修饰符可以*选择,但在接口的方法前不能够加任何访问修饰符
*它是隐式公开的
* 接口可以声明索引器、属性、方法,但是不能够包含字段、构造函数和常量
* 接口不能实现任何方法、属性和索引器(都在子类中实现)
* 接口中不能有构造函数
* 定义方法时可以不用加访问修饰符,只需要返回类型 + 函数名 +参数列表即可
* 定义接口时要在访问修饰符后加 interface 关键字
*/
public interface IChoose
{
void On();
void Off();
}
public class TV:IChoose
{
private string _tvname = "索尼";
public void On()
{
Console.WriteLine("{0}电视机打开了", this._tvname);
}
public void Off()
{
Console.WriteLine("{0}电视关了", this._tvname);
}
}
class Program
{
/*
*实现接口的语法和继承子类一样 “:”
* 接口中的方法在子类实现时,不是重载不需要加override关键字
* 在Main()中实例化类的方法不变
*/
static void Main(string[] args)
{
TV mytv = new TV();
mytv.On();
mytv.Off();
Console.ReadKey();
}
}
}
接口的继承
using System;
namespace 接口的继承
{
//学生接口
public interface IStudent
{
void Study();
}
//职员接口
public interface IEmployee
{
void Work();
}
/*
*如果要继承多个接口那么要在:后面将多个接口用,隔开
*而且在实现里面要实现继承的d所有接口的所有方法
*/
//在职学生接口
public class IWorkingStudent:IStudent,IEmployee
{
public void Work()
{
Console.WriteLine("你必须完成你的工作");
}
public void Study()
{
Console.WriteLine("你必须完成你的学业");
}
}
class Program
{
static void Main(string[] args)
{
IWorkingStudent stu = new IWorkingStudent();
stu.Study();
stu.Work();
Console.ReadKey();
}
}
}
类和接口同时继承
using System;
namespace 类和接口的同时继承
{
//定义父类
public class Person
{
//定义字段
private string name;
private string sex;
private int age;
//定义只读属性
public string Name
{
get => name;
}
public string Sex
{
get => sex;
}
public int Age
{
get => age;
}
//构造函数
public Person(string Pname, int Page, string Psex)
{
this.age = Page;
this.name = Pname;
this.sex = Psex;
}
}
//定义学生接口
public interface IStudent
{
void StudyBase();
string StudentId { get; set; }
}
//定义职员接口
public interface IEmployee
{
void Work();
}
//定义计算机类学生接口
public interface IInforStudent:IStudent
{
void StudySpecial();
}
public class InfoStudent:Person,IEmployee,IInforStudent
{
private string studentId;
public string StudentId
{
get { return studentId; }
set { studentId = value; }
}
//构造函数,调用父类构造函数
public InfoStudent(string sname, int sage, string ssex, string sstudentId):base(sname,sage,ssex)
{
this.studentId = sstudentId;
}
//实现职员的接口
public void Work()
{
Console.WriteLine("你的工作必须完成");
}
//实现计算机类学生的接口
public void StudySpecial()
{
Console.WriteLine("你是计算机专业的学生,必须学习c#");
}
//实现接口IStudent的方法
public void StudyBase()
{
Console.WriteLine("教育部规定高校学生必须学习语文、英语和政治思想课");
}
}
class Test
{
static void Main(string[] args)
{
InfoStudent student = new InfoStudent("楚留香", 23, "男", "200801");
Console.WriteLine("姓名={0},学号={1},年龄={2},性别={3}", student.Name, student.StudentId, student.Age, student.Sex);
student.Work();
student.StudyBase();
student.StudySpecial();
Console.ReadKey();
Console.WriteLine("Hello World!");
}
}
}
显式接口的实现
using System;
namespace 显式接口
{
//定义接口
public interface IPerson
{
string Name { get; set; } //定义属性
void Show(string name); //定义方法
}
//定义接口
public interface IStudent
{
string StudentId { get; set; } //定义属性
void Show(string studentid); //定义方法
}
public class Student:IPerson ,IStudent
{
//实现接口IPerson中的属性
private string _name;
public string Name { get => _name; set => _name = value; }
//实现接口IStudent中的属性
private string _studentid;
public string StudentId { get => _studentid; set => _studentid = value; }
void IPerson.Show(string name)//显式接口的实现
{
Console.WriteLine("显示姓名{0}", name);
}
void IStudent.Show(string studentid)//显式接口的实现
{
Console.WriteLine("显示学号{0}", studentid);
}
}
class Test
{
/*
* 两个接口有一个同名函数
* Student类同时实现了两个接口,所以就要实现各自的方法
* 接口名.方法名()来区分时哪一个接口
* 显式实现的时候方法名前面不加访问修饰符
* 普通方法不加修饰符默认为私有的
* 显式接口实现的方法前不加修饰符默认为私有
* 如果加上了修饰符则会出现编译错误
* 会出现你加的修饰符对于这个方法函数无效的错误警告
*/
static void Main(string[] args)
{
Student student = new Student();
Console.WriteLine("请输入学生姓名");
student.Name = Console.ReadLine();
Console.WriteLine("请输入学生学号");
student.StudentId = Console.ReadLine();
IPerson per = student;
per.Show(student.Name);
IStudent stu = student;
stu.Show(student.StudentId);
Console.ReadKey();
}
}
}
上一篇: 微信软文内容怎么写才能吸引人?
下一篇: 小程序接口对接