ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-01-19

2021-01-19 15:00:56  阅读:251  来源: 互联网

标签:01 19 void 接口 dance 抽象 2021 方法 public


java中接口的使用及实现(一)

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。接口的作用,对外部提供功能的声明,所以接口是用来被具体类实现的;类实现接口使用implements关键字来实现。一个类通过继承接口的方式,从而来继承接口的抽象方法。实质上,接口就是一种特殊的类,但是接口和类却不同。

接口特征

1.接口不能用于实例化对象。(这句话的意思就是指不能在别的类中new出一个接口类的对象,在Java中,其他类要调用另一个类(非静态类)中的方法,则需要对其进行实例化)

2.接口没有构造方法。(我们都知道,在类中都有一个默认构造方法,若重写构造方法,则默认构造方法消失,而在接口中不存在构造方法)

3.接口中所有的方法必须是抽象方法。(注:JDK 1.8 以后,接口里可以有静态方法和方法体了。第二节会作解释)

4.接口中的成员变量必须为常量而且也只能是常量
接口中的成员变量默认:public static final修饰
public static final int dianYa=5;

5.接口中的抽象方法,默认可以不适用abstract修饰符修饰
因为在接口中没有方法体的方法默认就是用abstract修饰符修饰的
默认修饰符 public abstract

6.一个类可以同时继承一个类并实现多个接口。例如:

public interface A {
    public void sing();
}


public interface C {
    public void dance();
}


public  class B implements A,C {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }

    @Override
    public void dance() {
     System.out.println("------跳舞");
    }
}

上述例子中,B实现了两个接口,所以实现接口A和C中所有的抽象方法。

接口的实现

接口就是抽象方法的集合,需要有具体的类去实现接口中的抽象方法,一个类可以实现多个接口。接口生来就是要被实现的,如果没有一个类实现这个接口,那么这个接口就没有意义。Java中规定,一个实现接口的类必须实现接口中所有的抽象方法,否则必须声明为抽象类。

public interface A {
    public void sing();
    public void dance();
    //此时可以看到接口A中有两个抽象方法
}



public  class B implements A {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }

    @Override
    public void dance() {
        System.out.println("--跳舞");

    }

上述例子类B为普通类,所以实现了A中所有的抽象方法。

假设此时B类实现A接口中的一个方法而不想实现所有的抽象方法则把B类声明为抽象类即可:

public interface A {
    public void sing();
    public void dance();
    //此时可以看到接口A中有两个抽象方法
}
public  abstract class B implements A,C {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }
    /**
    *此时类B并没有实现接口A中的dance()方法,所以B类声明为抽象方法。否则会报错
    */
}

(此时B类中的方法便不能直接在主函数中直接调用了,因为B已经是一个抽象类了,我们就需要定义一个B的子类去继承B,然后再通过子类对象去调用B中的方法)。

接口的继承

接口也是可以继承的,Java中接口可以继承接口,当一个接口继承了另一个接口后,子接口自动拥有父接口中的所有属性和方法。
1.单继承

public interface A {
    public void sing();
    public void dance();
}

public interface C extends A {
    public void football();
}



public  class B implements C {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }

    @Override
    public void dance() {
        System.out.println("--跳舞");

    }

    @Override
    public void football() {
        System.out.println("--足球");

    }
}


public class test{
    public static void main(String[] args) {
        B b=new B();
        b.sing();
        b.dance();
        b.football();
    }
}


运行结果
在上面的例子中,接口C继承了接口A,可以看到C中原本定义的抽象方法只有一个football(),当它继承了接口A之后,则继承A中所有的方法,即C继承了两个方法,再加上自己声明的方法,共三个方法,所以实现C接口的类需要实现三个方法。
2.多继承


public interface A {
    public void sing();
    public void dance();
}

public interface B {
    public void eat();
}

public interface C extends A,B{
    public void football();
}

接口可以实现多继承,一个接口可以继承多个接口,用extends关键字实现,各个接口之间用逗号隔开。上述例子中,接口C则继承了A和B的所有抽象方法,所以实现C接口的类,需要实现四个方法。

标签:01,19,void,接口,dance,抽象,2021,方法,public
来源: https://blog.csdn.net/weixin_46082990/article/details/112808004

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有