在java中,接口只是定义了一个方法名,并没有方法体。那实现接口有啥用呢。仅仅只是需要一个方法名吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java中,接口只是定义了一个方法名,并没有方法体。那实现接口有啥用呢。仅仅只是需要一个方法名吗?相关的知识,希望对你有一定的参考价值。

哈哈,实现接口,当然是实现接口里面的方法了。不同的类实现同一个接口,方法名虽然是一样的,但方法体肯定不会一样。这就叫多态。比如猫和狗都是动物,动物这个接口类中有一个吃的抽象方法,猫和狗实现了动物类,猫和狗就都有吃的方法了,只不过吃的具体东西不一样而已!由于猫和狗是动物的两种不同种类形态,因此也称为动物的多态。追问

那我直接给猫类中定义一个吃的方法,给狗类中也直接定义一个方法就好了啊。何必还要实现接口呢。接口中也只是一个方法名而已啊。

追答

接口的体现了java对象的多态性,其实接口的目的是为了便于程序的扩展性。如果你直接定义成具体的类型和具体的方法,如果要更换实现非常不方便。

追问

但是,接口提供的只是一个方法名字而已啊,方法体还得我自己写啊

追答

是啊,所以不同的类型,可以有不同实现的方法体!

参考技术A 接口相当于一种规范,比如说我需要你帮我做一个东西,我就得告诉你我需要这个东西有哪些功能,我就可以定义一个接口,让你去实现它 参考技术B 接口就是人家给你的一套规范,就告诉你有这么个东西,具体实现你自己搞定 参考技术C 接口就是标准,以后用到了慢慢体会吧,用多了就明白它的好处了 参考技术D 线程:1. 实现Runnable的接口
2. 继承Thread类

java继承-------接口

接口的概念

接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。

请记住:一切事物均有功能,即一切事物均有接口。

 

 接口的定义

public interface 接口名 {

抽象方法1;

抽象方法2;

抽象方法3;

}

 

接口关键字

使用interface        是公共的方法

使用interface代替了原来的class,其他步骤与定义类相同:

l  接口中的方法均为公共访问的抽象方法

l  接口中无法定义普通的成员变量

 

接口的继承

实现使用implements。

class 类 implements 接口 {

    重写接口中方法

注意

在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。

l  接口中定义功能,当需要具有该功能时,可以让类实现该接口,只声明了应该具备该方法,是功能的声明。

l  在具体实现类中重写方法,实现功能,是方法的具体实现。

于是,通过以上两个动作将功能的声明与实现便分开了。(此时请重新思考:类是现实事物的描述,接口是功能的集合。)

 

接口中成员的特点

关键字

final

1,接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。

2、接口中可以定义方法,方法也有固定的修饰符,public abstract

3、接口不可以创建对象。

4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。

 

   接口的多实现

怎么解决多继承的弊端呢?

弊端:多继承时,当多个父类中有相同功能时,子类调用会产生不确定性。

其实核心原因就是在于多继承父类中功能有主体,而导致调用运行时,不确定运行哪个主体内容。

为什么多实现能解决了呢?

因为接口中的功能都没有方法体,由子类来明确。

 

 

 类继承类同时实现接口        多继承

接口的出现避免了单继承的局限性。父类中定义的事物的基本功能。接口中定义的事物的扩展功能。

优点

1、接口的出现扩展了功能。

2、接口其实就是暴漏出来的规则。

3、接口的出现降低了耦合性,即设备与设备之间实现了解耦。

 

接口的出现方便后期使用和维护,一方是在使用接口(如电脑),一方在实现接口(插在插口上的设备)。例如:笔记本使用这个规则(接口),电脑外围设备实现这个规则(接口)

 

 

 接口和抽象的区别

相同点:

l  都位于继承的顶端,用于被其他类实现或继承;

l  都不能直接实例化对象;

l  都可以包含抽象方法,其子类都必须覆写这些抽象方法;

区别:

l  抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;

l  一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

l  抽象类是这个事物中应该具备的内容, 继承体系是一种 is..a关系

l  接口是这个事物中的额外内容,继承体系是一种 like..a关系

 

二者的选用:

l  优先选用接口,尽量少用抽象类;

l  需要定义子类的行为,又要为子类提供共性功能时才选用抽象类;

 

以上是关于在java中,接口只是定义了一个方法名,并没有方法体。那实现接口有啥用呢。仅仅只是需要一个方法名吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java8新特性:接口

java接口

Java 接口

如何在Java类中定义接口属性并如何使用接口的方法

java接口

java继承-------接口