接口(interface)
一、接口的概念
接口是一组规范,使用者和实现者共同遵守的规范
**二、语法 **
1.声明一个接口
访问修饰符(public/default)
interface 接口名{}
2.接口中的属性都是公开静态最终的常量,即public static final
3.接口中的方法都是公开抽象的方法,即public abstract
4.接口中的修饰符可以缺省,但是子类覆盖方法的时候,必须声明为public
5.使用接口的关键字是 实现(implements)
**三、接口的特点 **
1.接口中属性和方法的访问修饰符都是默认的,不可更改的
2.接口中没有构造方法
3.接口不能创建对象,但是可以声明引用(多态)
4.接口编译之后会生成.class文件,但接口不是类
**四、接口的使用 **
1.接口与接口之间的使用
一个接口可以继承多个接口,关键字是extends —> 多继承
2.接口与类之间的使用
一个类可以实现多个接口
—> 多实现
3.继承和实现
一个类可以继承一个父类的同时实现多个接口 —> 单继承多实现
class Sub extends Super implements IA,IB{}
**五、强制类型转换 **
1.强制类型转换中,如果一方为接口类型引用,那么编译一定通过
2.运行是否通过:
转换双方的类型匹配,运行通过
转换双方类型不匹配,报类型转换异常
**六、接口的作用 **
1.扩充子类功能
将主要的功能定义在父类中,而将次要的功能定义在接口中
2.弱耦合
通过接口将使用者和实现者分离
通过多态将模块间的关系弱化
编程题目:
实现:
package Thirdweek;
interface MathTool2 {
long fact(int m);
long intPower(int m,int n) ; boolean findFactor(int m,int n);} class MathTools1 implements MathTool2{ public long fact(int m) {//求参数的阶乘 int sum=1;
if(m<0) {
throw new IllegalArgumentException("需要计算的参数必须为正数!");
//抛出不合理参数异常
}
for(int i=1;i<=m;i++) { sum*=i;
}
return sum; }
public long intPower(int m,int n) {
//求m的n次方
int y=0;
if(n==0){
y=1;
}else{
y=(int)
intPower(m,n/2);
y=y*y;
if(n%2!=0){
y=m*y;
} }
return y;
}
public boolean findFactor(int m,int n) {//判断参数的和是否大于100
if(m+n>100){ System.out.println("参数和大于100"); return true;
}else if(m+n==100){ System.out.println("参数和等于100"); return false;
}else{ System.out.println("参数和小于100"); return false;
} } }
public class MathTools {
public static void main(String[] args) {
// TODO Auto-generated method stub MathTools1 mathtools1 = new MathTools1(); System.out.println(mathtools1.fact(8)); System.out.println(mathtools1.intPower(2, 3)); System.out.println(mathtools1.findFactor(45,87)); }}