来自一个小菜鸟的总结--接口
一、多态
1.通过多态可以减少类中的代码量,可以提高代码的可扩展性。继承是多态的基础,没有继承就没有多态。
2.把子类转换为父类称为向上转型,自动进行类型转换。把父类转换为子类称为向下转型,必须进行强制类型转换。
3.向上转型后通过父类引用变量调用的方法是子类覆盖或继承父类的方法,通过父类引用变量无法调用子类特有的方法。
4.向下转型后可以访问子类特有的方法。必须转换为父类指向的真实子类类型,否则将出现类型转换异常ClassCasException。
5.instancefo运算符用于判断一个对象是否属于一个类或实现了一个接口。
6.instancefo运算符通过和强制类型转换结合使用,先通过instanceof进行类型判断,再进行相应的强制类型转换。
7.使用父类作为方法形参和使用父类作为返回值类型是使用多态的常用方式。
例子:
子类转到父类(向上转换):
Pet pet=new Dog("欧欧","雪娜瑞");
pet.eat();
(父类转到子类)向下转换:
Pet pet=new Pet("欧欧","雪娜瑞");
pet.eat();
Dog dog=(Dog)pet; //强制类型转换狗对象
二、接口
1.接口中的属性都是全局静态常量接口中的方法都是全局抽象方法,接口中没有构造方法。
2.类只能继承一个父类,但可以实现多个接口。一个类如果实现了一个接口,则必须实现接口中的全部方法,否则必须将其为抽象类。Java通过实现接口达到了多重继承的效果。
3.接口表示一种约定,接口表示一种能力。接口体现了约定和实现向分离得原则。
4.抽象类利于代码复用,接口利于代码维护。
5.通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和维护性。
6.面向接口编程意味着:开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换系统。
7.C#中接口的成员主要是方法、属性。接口中不能包含常量、变量、构造方法和任何静态成员。定义接口时显示指定任何修饰符是非法的。