目录
一.接口
1.生活中的接口
生活中的接口都是给定规范,其他厂商需要遵守这个规范来生产产品。例如上图所示的USB接口,各种产品所生产出来的商品都遵循着USB的形状来生产。
同理java中的接口也是这个作用,接口去定义方法的功能交给类来实现,接口与抽象类相似,都是抽象的思想,但是比抽象类更加简洁,在接口中没有抽象类那么多信息
2.interface关键字和implements关键字
>1.interface关键字
interface关键字是用来修饰接口的关键字,其语法格式如下
public interface MyInterface{
}
>2.implements关键字
implements关键字是用来修饰类的,类实现接口,其语法格式如下
public class [类名] implements [接口名]{
}
3.接口的组成成员由四个部分组成
1>常量
2>抽象方法
3>静态方法
4>默认方法(用default关键字修饰)
public interface MyInterface{
//常量
double pi = 3.1415926;//实际上是public static final double pi = 3.1415926;
//抽象方法
public abstract void test1();
//静态方法
public static void test(){
//方法体
}
//默认方法
public default void test2(){
System.out.print("接口中的默认方法,让子类去调用");
}
}
注意静态方法和默认方法是jdk1.8以后新添加的内容。
4.接口的相关定义
1.接口与类直接具有多态性,语法格式如下
//接口
public interface MyInterface{
}
//实现接口的类
public class Test implements MyInterface{
}
public static void main(String[] arg)
{
MyInterface my = new Test();//用接口指向实现的接口的类的对象
}
2.一个类实现接口必须将接口中所有的抽象方法进行重写,否则这个类就要定义为抽象类
//接口
public interface MyInterface{
//接口中的抽象方法
public abstract void test(参数);
}
//实现接口的类(将接口中的抽象·方法全部重写的情况)
public class Test implements Myinterface{
public void test(参数){
//方法体
}
}
//实现接口的类(没有重写接口中的抽象方法把这个类定义为抽象类)
public abstract class Test implements Myinterface{
}
3.一个类可以实现多个接口
public class Test implements MyImplements,MyImplementsA,MyImplementsB{
}
4.接口与接口之间可以继承,一个接口可以被多个接口继承
public interface MyInterface extends MyinterfaceA,MyinterfaceB,MyinterfaceC{
}
5.类与类考虑继承,类与接口考虑实现(implements),接口与接口考虑继承
二.抽象类
1.抽象方法
1>抽象方法也是方法的一种,它没有具体的实现,只有声明没有方法体,是抽象的概念。
2>抽象方法必须用abstract去修饰。
3>继承抽象类的类,必须将抽象类中所有的抽象方法进行重写,否则这个类也要定义为抽象类。
定义抽象方法的语法如下:
public abstract void [方法名](参数);
2.抽象类
1>如果父类的方法实现与子类不同,子类都需要进行重写,那么这些方法就显的有些多余,我们就将这种类定义为抽象类。
2>一个类中包含不完整的方法(抽象方法),那么这个类一定是抽象类,但抽象类中可以不含有抽象方法。
3>抽象类是不能创建实例的,因为抽象类中含有抽象方法。
4>抽象类主要是定义一些抽象方法,让子类对其进行重写。
5>当一个类继承了抽象了,那么子类必须将抽象类中的抽象方法进行重写,否则子类也要定义为抽象类。
总结一下,抽象类,抽象方法都是设计层面的东西,需要程序员进行重写来实现方法。
定义抽象类的语法如下:
public abstract [类名]{
//类中的信息
}
三.抽象类与接口的相同与不同
1.相同
1>都可以含有抽象方法
2>都不能被实例化(因为有未实现的方法)
2.不同
1>抽象类可以包含成员变量,方法,抽象方法,构造方法
2>接口只能包含常量,抽象方法,静态方法,默认方法