using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
* C#接口
* 概念:接口就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合,一个接口定义了一个协议,接口可以包含方法、自动属性、事件(方法)和索引;
* 作用:
* 起到一个约束的作用,继承自接口的类必须实现接口的方法,这样便于更好的管理代码,避免遗漏;
* 定义:
* interface 接口关键字
* public interface IDog
* { }
* 注意接口的命名规则+帕斯卡命名法定义的接口名
* 特点:
* 1.接口不能被实例化;
* 2.接口只能包含方法声明;
* 3.接口的成员包括方法、属性、索引器、事件(方法);
* 4.接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员;
* 5.接口中的所有成员默认为公开成员,因此接口中不能有修饰符;
* 6.派生类必须实现接口的所有成员;
* 接口与抽象类的共同点:
* 1.都可以被继承;
* 2.都不能被直接实例化;
* 3.都可以包含方法声明,都没有方法体;
* 4.派生类必须实现未实现的方法;
* 接口与抽象类的区别:
* 1.抽象基类可以定义字段、属性、方法实现;接口只能定义属性、索引器、事件和方法声明,不能包含字段;
* 2.抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范;
* 3.接口可以继承多个,抽象类只能继承一个;
* 4.抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中;
* 5.接口基本上不具备继承的任何特点,它仅仅承诺了能够调用的方法;
* 6.如果抽象类实现接口,则可以把接口中的方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法;
*
*
* 隐式公共方法:默认为公开的
* 接口可以包含方法、属性、事件和索引
* 一个借口定义了一个协议
*
* 接口的作用:起到一个约束的作用,继承自接口的类
*
* 接口的关键词:interface
* public interface IDog{}默认为public
* 命名规则:I+帕斯卡命名
*
* 接口不能加private,都默认为公开,不能加任何修饰符
* 接口不能有方法体{},以分号结尾
*
* 接口不能被实例化
*
* class Dog : Animal,IDog,IBlack//接口类可以有多个
*
* 多态的三种表现:1、虚方法 2、抽象 3、接口
* 注意:抽象方法没有方法体;抽象类无法实例化
* * interface 接口名关键字
* 大写字母I开头
*/
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
IBind b = new Student();//里式转换
b.Jiao();
Student student = new Student();
student.Run();
student.Jiao();
//1.父类可以接受子类
Person p = new Student();//这样可以说是父类装载这子类
p.Run();
//2.如果父类里面装载的是子类,那么就可以把父类强制转换为子类
Student s1 = (Student)p;//强制转换
s1.Study();//父类不能调用子类的成员,子类可以调用父类的成员(私有除外)
Console.ReadKey();
}
}
class Person
{
public void Run()
{
Console.WriteLine("正在跑步");
}
}
interface IBind
{
//接口里面的方法不允许用访问修饰符修饰,默认就是public
//接口里面的方法不能有方法体(抽象类(abstract)也不能有方法体)
//接口里面不能包含字段
//private string name;
void Jiao();//不能有方法体(花括号)
string Name
{
get;//以分号结尾
set;//注意这不是属性
}
}
/*
* C#只能实现单继承,那么如果想实现多继承怎么办
* 接口
* ALT+shift+F10创建接口
* 注意:接口里面的必须全部实现
*/
class Student : Person, IBind//接口不能继承类,接口只能继承接口,类可以继承接口,也可以继承类,//接口类可以有多个父类
{
public void Jiao()//要与接口里面的完全一致,前面加上public公开的
{
Console.WriteLine("叫声比鸟叫的都好听");
}
public string Name
{
get { return Name; }
set { }
}
public void Study()
{
Console.WriteLine("在学习");
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
* C#接口
* 概念:接口就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合,一个接口定义了一个协议,接口可以包含方法、自动属性、事件(方法)和索引;
* 作用:
* 起到一个约束的作用,继承自接口的类必须实现接口的方法,这样便于更好的管理代码,避免遗漏;
* 定义:
* interface 接口关键字
* public interface IDog
* { }
* 注意接口的命名规则+帕斯卡命名法定义的接口名
* 特点:
* 1.接口不能被实例化;
* 2.接口只能包含方法声明;
* 3.接口的成员包括方法、属性、索引器、事件(方法);
* 4.接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员;
* 5.接口中的所有成员默认为公开成员,因此接口中不能有修饰符;
* 6.派生类必须实现接口的所有成员;
* 接口与抽象类的共同点:
* 1.都可以被继承;
* 2.都不能被直接实例化;
* 3.都可以包含方法声明,都没有方法体;
* 4.派生类必须实现未实现的方法;
* 接口与抽象类的区别:
* 1.抽象基类可以定义字段、属性、方法实现;接口只能定义属性、索引器、事件和方法声明,不能包含字段;
* 2.抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范;
* 3.接口可以继承多个,抽象类只能继承一个;
* 4.抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中;
* 5.接口基本上不具备继承的任何特点,它仅仅承诺了能够调用的方法;
* 6.如果抽象类实现接口,则可以把接口中的方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法;
*
*
* 隐式公共方法:默认为公开的
* 接口可以包含方法、属性、事件和索引
* 一个借口定义了一个协议
*
* 接口的作用:起到一个约束的作用,继承自接口的类
*
* 接口的关键词:interface
* public interface IDog{}默认为public
* 命名规则:I+帕斯卡命名
*
* 接口不能加private,都默认为公开,不能加任何修饰符
* 接口不能有方法体{},以分号结尾
*
* 接口不能被实例化
*
* class Dog : Animal,IDog,IBlack//接口类可以有多个
*
* 多态的三种表现:1、虚方法 2、抽象 3、接口
* 注意:抽象方法没有方法体;抽象类无法实例化
* * interface 接口名关键字
* 大写字母I开头
*/
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
IBind b = new Student();//里式转换
b.Jiao();
Student student = new Student();
student.Run();
student.Jiao();
//1.父类可以接受子类
Person p = new Student();//这样可以说是父类装载这子类
p.Run();
//2.如果父类里面装载的是子类,那么就可以把父类强制转换为子类
Student s1 = (Student)p;//强制转换
s1.Study();//父类不能调用子类的成员,子类可以调用父类的成员(私有除外)
Console.ReadKey();
}
}
class Person
{
public void Run()
{
Console.WriteLine("正在跑步");
}
}
interface IBind
{
//接口里面的方法不允许用访问修饰符修饰,默认就是public
//接口里面的方法不能有方法体(抽象类(abstract)也不能有方法体)
//接口里面不能包含字段
//private string name;
void Jiao();//不能有方法体(花括号)
string Name
{
get;//以分号结尾
set;//注意这不是属性
}
}
/*
* C#只能实现单继承,那么如果想实现多继承怎么办
* 接口
* ALT+shift+F10创建接口
* 注意:接口里面的必须全部实现
*/
class Student : Person, IBind//接口不能继承类,接口只能继承接口,类可以继承接口,也可以继承类,//接口类可以有多个父类
{
public void Jiao()//要与接口里面的完全一致,前面加上public公开的
{
Console.WriteLine("叫声比鸟叫的都好听");
}
public string Name
{
get { return Name; }
set { }
}
public void Study()
{
Console.WriteLine("在学习");
}
}
}