接口(interface)的基础语法
在抽象类中,可以包含一个或多个抽象方法;但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”。
接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不是规定它如何去做。
1、接口也是一种”引用数据类型“,编译之后还是一个.class的字节码文件。。
2、接口是完全抽象的(抽象类是半抽象的)。。
3、接口使用:interface定义的。。
4、接口支持多继承,一个接口可以继承多个接口。。
5、接口中只包含两部分内容:一是常量,,二是抽象方法(方法里面不能有方法体)。。
6、接口中的所有元素都是公开的(public修饰),所以在抽象方法定义时:public abstract修饰符可以省略。。
7、常量中的 public static final 也是可以省略的。。案例如下所示
public class test{
public static void main(String args[]) {
System.out.println(A.num);///3.1415926
}
}
interface A{
//常量:不能修改的
public static final double pi = 3.1415926;
double num = 3.1415926;// public static final 也是可以省略的。。
//方法:
public abstract int sub(int a,int b);//等同于下面的
int sum(int a,int b);
}8、接口的实现:用implements关键字(也可以将实现看作“继承”)
当一个非抽象的类实现接口时,必须将接口中的所有抽象方法全部实现(重写)。。
如果继承和实现同时出现时,先extends,后implements。。
public class test{
public static void main(String args[]) {
B b = new word();
A a = new word();
System.out.println(b.sum(2,15));//面向接口编程
System.out.println(a.sub(2,15));
}
}
class Number{
}
interface A{
double num = 3.1415926;
int sub(int a,int b);
}
interface B{
int sum(int a,int b);
}
class word extends Number implements A,B{
public int sub(int a,int b){
return a-b;
}
public int sum(int a,int b){
return a+b;
}
}9、接口在开发中的作用:
面向接口编程,可降低程序的耦合度,提高扩展能力,符合ocp开发原则。。
接口的使用离不开多态机制,(接口+多态才可以降低耦合)
public class test{
public static void main(String args[]) {
Total t = new Son1();
Father f = new Father(t);
f.print();//China Son1
//China Son2
}
}
interface Total{
void T1();
void T2();
}
class Son1 implements Total{
public void T1(){
System.out.println("China Son1");
};
public void T2(){
System.out.println("China Son2");
};
}
class Son2 implements Total{
public void T1(){
System.out.println("China Son3");
};
public void T2(){
System.out.println("China Son4");
};
}
class Father{
private Total total;
private Father(){
}
public Father(Total total){
this.total=total;
}
public void setTotal(Total total) {
this.total = total;
}
public Total getTotal() {
return total;
}
public void print(){
total.T1();
total.T2();
}
}版权声明:本文为Best_Basic原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。