接口:
接口是一种行为的抽象。接口可以看做是抽象类的特例。抽象类中可以有抽象方法,可以有具体方法。
但接口中只能有抽象方法。定义接口使用interface。实现接口使用implements。
接口中定义的方法都是抽象方法,修饰符为public abstract 即使不写 也是公共的抽象方法。
如果一个方法参数为接口类型,意味着可以传递该接口的任何实现类对象。
接口中可以定义变量,其修饰符是 public static final
接口可以继承接口。同时可以继承多个接口。一个类实现一个接口,不但要实现该接口中定义的抽象方法。
而且要实现该接口父接口中定义的抽象方法。
抽象类和接口的区别
1、抽象类和接口都不能直接实例化。
2、抽象类中可以有抽象方法,也可以有具体方法。但接口中只能有抽象方法。
3、抽象类中定义的变量是普通属性。但接口中定义的变量是公共的静态的常量。
4、一个类只能继承一个抽象类,但可以实现多个接口。
一个类实现一个接口,可以不完成实现接口中定义的抽象方法,但这个类只能是抽象类。
同样,一个类继承一个抽象类,也可以不实现抽象类中定义的抽象方法,这个类必须是抽象类。
一类继承一个父类,由于子类对象包含一个完整的父类对象,所以可以继承父类中所有的方法和属性,
包括私有方法和私有属性。但是私有方法和私有属性不能被子类直接访问,可以通过父类公有方法进行访问。
如果一个方法声明为private。那么该方法默认修饰为final。也就是该方法不能被子类所重写。
私有方法默认声明为final,也不能被子类重写。 但声明为抽象方法,是要求该方法子类重写。所以矛盾。
抽象方法不能声明为private和static。
一个方法的参数如果是父类类型,表示调用该方法时,可以传递任何一个子类对象。一个方法的参数如果
是接口类型,表示调用该方法时,可以传递任何一个实现类对象。