Java程序设计基础------类与对象(五)

紧接着上一篇的博客的内容,今天来讲一讲,类与对象中的接口.

什么是接口?为什么要定义接口?

接口是一种特殊的数据结构,他的结构与抽象类十分相似,接口本身也具有数据成员和抽象方法,接口的主要目的就是完成类似于类的多继承的功能。

作用:

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中关于接口中的一些知识点,可能写的不是很完全,欢迎你来补充! 

猜你喜欢

转载自blog.csdn.net/yanzhiguo98/article/details/88651501