由于内容果多,超过了系统长度限制,所以分俩部分发。
java不支持多重继承,一个类值允许有一个直接父类。这样在处理复杂问题是就显得力不从心,于是引入了接口,来弥补。
接口其实是一种完全的抽象类,任何类都可以实现接口,可以实现多个接口。
接口的定义
修饰符 interface 接口名{
变量类型 变量名;//一般不定义变量,定义了也会被系统自动设为public static final
返回值类型 方法名();//方法不需要abstract前缀,所有方法都是抽象,故省略。方法会被自动设public
}
接口默认修饰符是包可见,包外的类无法使用接口。public则任何类都可使用。
接口也被保存为.java文件,文件名与类名相同。
接口和抽象类的联系区别
第一点. 语法定义方式不同。
第二点. 接口可以多继承,抽象类不行。
第三点. 接口中全部为抽象方法,而抽象类部分为抽象方法。 第四点. 接口中方法会自动设为public(省略不写),而抽象类中方法可以自己设置。 第五点. 接口中基本数据类型自动设为static(省略不写) ,而抽类象不是的。
使用abstract class的方式定义Demo抽象类的方式如下: abstract class Demo { abstract void method1(); abstract void method2(); } 使用interface的方式定义Demo接口的方式如下: interface Demo { void method1(); void method2(); } 当你关注一个事物的本质的时候,用抽象类;当你关注一个动作的时候,用接口。 人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
接口的实现 class 类名 implements 接口1,接口2{ //具体代码 } 如果实现接口的类不是抽象类,必须实现接口的所有方法。抽象类则由其子类来实现。 实现接口的类中的方法必须定义为public,因为在接口中已经自动定义为public,根据继承原则,访问范围只能放大,不能缩小。 接口之间也可以相互继承。子接口拥有父接口的所有方法,实现子接口的类要实现所有方法。
接口的应用 跟抽象类一样,接口也无法实例化。只能指向实现了该接口的类的对象。调用非本接口的方法也需要对象类型转换。 接口变量存放实现接口类的对象,跟继承中的抽象类对象变量存放子类的对象一样,也是动态绑定。
|