紧接着上一篇的博客的内容,今天来讲一讲,类与对象中的接口.
什么是接口?为什么要定义接口?
接口是一种特殊的数据结构,他的结构与抽象类十分相似,接口本身也具有数据成员和抽象方法,接口的主要目的就是完成类似于类的多继承的功能。
作用:
1>可以实现多重继承;
2>可以实现类的多实现;
3>使用接口有利于软件层次结构的划分,有利于后期的维护和升级;
4>让设计和实现分离,降低耦合性;
如何定义接口?
【public】 interface 接口名称 【extends 父类接口名称】
{ 【public】【static】【final】数据类型 成员名 = 常量;
【public】【abstract】返回值类型 方法名(参数列表);
........
}
接口与抽象类有哪些异同?
抽象类:
1>抽象类只能单继承,抽象方法是以abstract修饰的,只声明返回类型、方法名称、参数列表、没有方法体;
2>并且抽象类中不一定有抽象方法,但有抽象方法的类必须申明为抽象类;
3>抽象类不能被实例化,但是它有构造方法;
4>抽象类不能配合final修饰符。
5>修饰抽象方法时,abstract不能和private、static、final、native并列修饰同一个方法。Static修饰的方法是不能被重写的。接口:
1>在java中类支持单继承、多实现,而接口与接口之间支持多继承;
2>在接口中生命成员变量一定要初始化值为常量;
3>接口中没有构造函数,所以不可能创建实例;
4>一个类可以同时实现多个接口;
5>实体类在实现接口后,将拥有接口中的所有的静态常量和方法;
6>接口的修饰符只有两种:public和缺省;
类、抽象类、接口之间的关系?
类可以继承类,类可以继承抽象类,抽象类可以继承类,抽象类可以继承抽象类,接口可以(多)继承接口,类可以实现接口,抽象类也可以实现接口!
接口实例:
public interface Myinterface {
public static final int I = 10;//数据成员
public static void static_methods(){
System.out.println("我是接口中的静态方法");
}
public default void default_method(){
System.out.println("我是接口中的,默认方法");
}
public abstract void speak();//定义抽象方法
}
接口的实现类:
package Day1;
public class Myinterfaceimpl {
public static void main(String[] args) {
relize re = new relize();
// System.out.printf(re.I);//接口中的常量不能用实例对象调用
System.out.println(Myinterface.I);//必须用接口名来调用接口中的常量
re.speak();
re.default_method();
}
}
class relize implements Myinterface{
@Override
public void speak() {
System.out.println("我实现了接口中抽象方法!");
}
}
注意点:
1>接口不能有静态代码块和构造方法;
2>一个类的父类是唯一的,但是一个类的接口可以是多个;
3>如果说一个实现类的接口多个中有相同的方抽象方法,那么实现类只需要写出重写一个方法即可;
4>若果以恶搞一个类的父类方法和一个接口中的默认方法一致,则优先调用父类中的方法。
这大概就是Java中关于接口中的一些知识点,可能写的不是很完全,欢迎你来补充!