C#Interface 接口、接口的特点、接口的用法、多态性、部分类、密封类、ToString()重载
2017-05-28 10:49
295 查看
接口就是一种规范,当一个类中继承一个类外,还需要继承其他类时,由于类继承的单一性,这时候需要使用接口来继承其他成员。
1、接口中的成员不允许有访问访问修饰符,默认为public
2、不允许写具有方法体的函数
3、不允许包含字段(接口不是用来存储数据的)
4、只允许有方法、自动属性(get set没有方法体)、索引器(本质都是方法)
5、只有一个类继承了接口,这个类必须要实现接口中的成员
6、接口不能被实例化,抽象类也不可以被实例化,静态类也不可以被实例化;但是可以把继承它的对象赋值给接口。
7、不允许有构造函数
8、接口与接口之间可以继承,并且可以多继承,类之间的继承只有单一性
9、类可以继承接口,接口不可以继承类;
10、子类继承了父类和接口,语法上将父类写在前面,基类写在接口前
接口定义形式:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面程序中方法名不规范,应该首字母大写
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
![](https://img-blog.csdn.net/20170601134709411?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuaHVhdGFuZ3Rhbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
-------------------------------------------------------------------------------------------------------
多态性:
虚方法:父类需要创建对象,有自己的实现
抽象类:父类不需要有自己的实现
接口: 无父类关系,不是继承关系
小鸟会飞,小狗不会飞,小飞虫会飞:
这时候采用那哪种方式实现多态呢: 假设有一个父类,小鸟??但是有的会飞,有的不会飞,方法不一样;
假设抽象类,父类就不可以被实例化,不满足
所以只能采用接口,各有各的实现方法。
部分类
// 下面是两个部分类,都是teacher类中的一部分;两个的资源共享,可以相互访问,包括private成员。
其中不可以写相同名的方法和成员,但是可以重载,用法跟同一个类中相同。
密封类:不可以被继承,可以继承其他类
对对象打印.ToString() 打印出来的为命名空间
ToString()
object.To.String() 这个是父类的方法,子类可以调用。
1、接口中的成员不允许有访问访问修饰符,默认为public
2、不允许写具有方法体的函数
3、不允许包含字段(接口不是用来存储数据的)
4、只允许有方法、自动属性(get set没有方法体)、索引器(本质都是方法)
5、只有一个类继承了接口,这个类必须要实现接口中的成员
6、接口不能被实例化,抽象类也不可以被实例化,静态类也不可以被实例化;但是可以把继承它的对象赋值给接口。
7、不允许有构造函数
8、接口与接口之间可以继承,并且可以多继承,类之间的继承只有单一性
9、类可以继承接口,接口不可以继承类;
10、子类继承了父类和接口,语法上将父类写在前面,基类写在接口前
接口定义形式:
public interface IFUMable // 访问修饰符,接口关键字,接口名(以I 开头,以able结尾) { void show(); }
自动属性:(缺点是没法进行限定),作用效果跟属性差不多; public string Pro { get; set; }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面程序中方法名不规范,应该首字母大写
//实现接口的方法,不需要加override;实现虚方法和abstract方法都需要加override static void Main(string[] args) { Inwordable word=new teachar1(); // 两种方法都可以访问,声明接口或者类都可以 word.word(); teachar1 te = new teachar1(); te.word(); Console.ReadKey(); } public class teacher { private string _job; } public class teachar1:teacher,Inword 4000 able // 必须要实现其中的方法成员,不需要override { public void word() { Console.WriteLine ("The class of teacher1"); } public string str2() {// 必须要加访问限定符,对于接口的方法要实现,不需要加override Console.WriteLine ("实现接口的方法,不需要加override;实现虚方法和abstract方法都需要加override"); } } public interface Inwordable { void word(); // 接口中的方法不可以有访问修饰符 string str2(); }
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
//如果在一个继承了接口的类中,接口和类都有一个相同的方法;必须要实现接口的方法,需要加上接口的名字,显示实现接口方法; //在声明的接口中,调用接口的方法;声明的类中,实现类中自己定义的方法。 class Program { static void Main(string[] args) { // 分别声明了一个接口和一个类,由于已经显示的重载了方法,所以各自运行各自的方法 Inwordable word = new teachar1(); word.word(); teachar1 te = new teachar1(); te.word(); Console.ReadKey(); } } public class teachar1 : Inwordable { void Inwordable.word()//这里是为了实现接口的方法,而不是继承接口的方法,所以不用写override;但是要显示实现接口方法,加上接口的名字 { Console.WriteLine("这个方法是显示实现接口的,为了解决重名问题"); } public void word() { Console.WriteLine("这个是类中自己的方法"); } } public interface Inwordable { void word(); // 接口中的方法不可以有访问修饰符 }
-------------------------------------------------------------------------------------------------------
多态性:
虚方法:父类需要创建对象,有自己的实现
抽象类:父类不需要有自己的实现
接口: 无父类关系,不是继承关系
小鸟会飞,小狗不会飞,小飞虫会飞:
这时候采用那哪种方式实现多态呢: 假设有一个父类,小鸟??但是有的会飞,有的不会飞,方法不一样;
假设抽象类,父类就不可以被实例化,不满足
所以只能采用接口,各有各的实现方法。
部分类
// 下面是两个部分类,都是teacher类中的一部分;两个的资源共享,可以相互访问,包括private成员。
其中不可以写相同名的方法和成员,但是可以重载,用法跟同一个类中相同。
public parital class teacher { privte string _job; } public parital class teachar { public void show() { Console.WriteLine ("这两个partial类共同构成了一个类,可以共享"); } }
密封类:不可以被继承,可以继承其他类
public sealed class student { public void show() { Console.WriteLine("seal 表示一个密封类,不可以被继承"); } }
对对象打印.ToString() 打印出来的为命名空间
ToString()
object.To.String() 这个是父类的方法,子类可以调用。
相关文章推荐
- C#进阶6_部分类、密封类、多态的手段、ToString用法
- C++第12周mooc在线测评—第12周 统一接口不同实现-多态性(虚函数与符号重载)
- .Net学习笔记----2015-06-29(序列化和反序列化、部分类、密封类、重写ToString)
- JAVA基础--重载与重写,接口与抽象类,构造方法的作用,代码块的分类
- JAVA【类】析构器、重载与继承、方法的重写、自动转型、多态、方法与类的分类、接口继承
- 《Effective C#》Item 20:区分接口实现与虚函数重载
- 英文字体设计的分类及特点
- 关于网络广告的特点与分类
- IConfigurationSectionHandler 接口的用法
- LCD的接口分类
- java学习笔记(五)----super用法,final用法,抽象类,接口
- HttpSession接口中的方法(Jsp中的session类的用法)
- 重载赋值操作符的分类
- HttpSession接口中的方法(Jsp中的session类的用法)
- [NET]Asp.net日期字符串格式化显示--DateTime.ToString()用法详解
- 嵌入式软件的分类、特点以及发展趋势
- Comparable接口的用法与排序算法的脱藕
- JAVA中几个易混淆关键词的理解:行为,隐藏,组合和继承,覆写和重载,多形(多态)性,动态绑定,上溯造型,抽象类,接口
- 语音应用程序接口(API)的几种分类
- 重载 ,覆盖 ,隐藏(OOP多态性)