栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 接口

需求:需要飞到北京出差

飞机、鸟和超人不能归于一个类属,但是具备有相同的特性:会飞的。所以引入了一个新概念叫做接口。

使用关键字interface定义接口

public interface 会飞的 {
    public void 起飞();
    public void 巡航飞行();
    public void 降落();
}

接口不能直接使用,必须有对应的实现类

public class 飞机类 implements 会飞的 { //共性是通过实现接口来表示的
    private String name; //名称,这是类属的属性,这里可以定义字节类的成员,和接口无关
    //如果当前类不是抽象类,则必须实现接口中的所有抽象方法
    @Override
    public void 起飞() {
        System.out.println("使劲的跑,一抬头就飞起来了");
    }
    @Override
    public void 巡航飞行() {
        System.out.println("使劲的烧油...");
    }
    @Override
    public void 降落() {
        System.out.println("我对准...");
    }
}

通过接口定义变量,使用具体类的实例,进行调用

引入接口的目的在于隔离实现

public void 出差(飞机 obj){}
    //这种写法当前类和飞机是耦合的,如果需要坐超人出差,则必须修改源代码
public void 出差(会飞的 obj){}
    //当前类只是和接口耦合,任何实现了接口的对象都可以作为参数进行传入

使用接口而不是使用具体的类,则可以实现在实现接口的多个具体实现类之间进行更换,例如定义出超人 类

什么是接口

在Java中不直接支持多继承,因为会出现调用的不确定性,所以Java将多继承机制进行改良,在Java中变成了多实现。一个类可以实现多个接口,一个接口可以继承多个接口

interface IA{}
interface IB{}
interface IC extends IA,IB{} 正确的,其中IC中的方法等于IA+IB
class A implements IA,IB{}
IA a=new A();
IB b=new A();

接口是一种特殊的抽象类,接口只能被abstract或者public修饰

没有构造器方法

public interface IA{
    public IA(){} //语法报错
}

没有属性,只能定义常量

public class Test {
    public static void main(String[] args) {
        System.out.println(IA.name); //常量可以直接使用
        System.out.println(B.name); //实现类也可以直接访问常量
    }
}
interface IA {
    String name = "yanjun";// 接口中只能定义常量,不能定义属性,默认限定词
public static final,自定义限定词不能冲突
}

class B implements IA{}

可以包含抽象方法,也可以没有抽象方法

interface IA1 {
}// 这个接口中没有包含任何抽象方法

class A1Impl implements IA1 {
}

接口中的方法只能被public、default、abstract、static修饰

        一般情况下接口中只定义抽象方法

        定义的方法默认为公开的抽象方法

interface IA2{
    int ee();//默认public abstract int ee();
    public void pp();//方法的限定词可以是public, abstract, default,
    //static,前面的public可以省略,如果不写默认public
    public abstract void cc();//这里abstract可以省略,默认就是abstract
    //在JDK1.8中引入特殊关键字default,允许提供默认实现
    public default void dd(){ //这个方法的调用必须有实现类
        System.out.println("dddd....");
    }
//在JDK1.8中允许在接口中定义静态方法
    public static void ff(){ //这个静态方法可以通过接口名称直接调用
IA2.ff()
        System.out.println("ffffff");
    }
}

        抽象方法必须在实现类中提供实现

        可以使用default关键字给抽象方法提供默认实现,有默认实现的方法在实现类中可以重新定义,也 可以不重新定义

报错原因:Java中不支持类的多重继承,一个类只能有一个双亲类

接口允许多重继承

一个类在继承另一个类的同时,还可以实现多个接口

接口允许多重继承
interface IA1{
    public void p1();
}
interface IA2{
    public void p2();
}
interface IC extends IA1,IA2{
    public void p3();
}//可以继承多个父接口,此时IC中实际有3个抽象方法


//类是单根继承,不允许继承多个父类

允许一个类实现多个接口,但是每个接口的抽象方法都必须提供实现,否则是抽象类。提供的实现也可以 是继承

接口的出现避免了单继承的局限性,这样定义C接口则拥有A+B的所有定义,可以使用A和B接口以及父 类D声明变量类型,直接new T。但是约束时,用谁声明变量编译器系统识别就是谁这种类型,也就意味 只能调用识别类型中的方法,不能调用其他方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032298.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号