201711671112 《JAVA程序设计》第六章学习总结
教材学习内容总结
1、使用关键字interface来定义一个接口,接口的定义分为接口声明和接口体
interface Printable{
final int MAX=100;
void add();
float sum(float x,float y);}
2、接口提中包含常量的声明(没有变量)和抽象方法 ,接口体只有抽象的方法,没有普通的方法,而且接口体中所有的常量的访问权限一定都是public,而且是static常量,所有的抽象方法的访问权限一定都是public(可省public astract),没有构造函数
3、接口由类实现以便使用接口中的方法。一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口,实现多个用逗号隔开接口名,例 animal的dog子类实现eatable和sleepable接口
class Dog extends Animal implements Eatable,Sleepable
4、如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口的所有方法
Example6_1
package Example6_1;
interface Computable{
int MAX=46;
int f(int x);
}
class China implements Computable{ //china类实现computable接口
int number;
public int f(int x) {
int sum=0;
for(int i=1;i<x;i++) {
sum=sum+i;
}
return sum;
}
}
class Japan implements Computable{
int number;
public int f(int x) {
return MAX+x; //直接使用接口中的常量
}
}
public class Example6_1 {
public static void main(String[] args) {
China zhang;
Japan henlu;
zhang=new China();
henlu=new Japan();
zhang.number=32+Computable.MAX; //用接口名访问接口常量
henlu.number=14+Computable.MAX;
System.out.println("zhang的学号"+zhang.number+",zhang求和结果"+zhang.f(100));
System.out.println("henlu的学号"+henlu.number+",henlu求和结果"+henlu.f(100));
}
}
5、如果一个类声明实现一个接口,但没有重写接口中的所有方法,那么这个类必须是抽象类。抽象类既可以重写接口中的方法,也可以直接拥有接口中的方法。
6、接口中的UML图,接口的名字必须是斜体字体,而且需要<<interface>>修饰名字,分为两行
7、接口属于引用型变量,接口变量中可以存放实现该接口类型的实例引用,即存放对象的引用。
8、接口回调:可以把实现某一接口的类创建的对象的引用复制给该接口声明的接口变量,那么该接口变量就可以调用被类实现的方法。接口无法调用类中的其他非接口方法。
example6_2
package Example6_2;
interface ShowMessage{
void 显示商标(String s);
}
class TV implements ShowMessage{
public void 显示商标(String s) {
System.out.println(s);
}
}
class PC implements ShowMessage{
public void 显示商标(String s) {
System.out.println(s);
}
}
public class Example6_2 {
public static void main(String[] args) {
ShowMessage sm; //声明接口变量
sm=new TV(); //接口变量中存放对象的引用
sm.显示商标("长城牌电视机"); //接口回调
sm=new PC(); //接口变量中存放对象的引用
sm.显示商标("联想奔月5008PC机");//接口回调
}
}
9、接口可以要求某些类有相同的名称的方法,但方法的具体内容可以不同。接口在要求一些类有相同名称的方法时,并不强迫这些类具有相同的父类。