Java-接口和抽象类

时间:2021-6-12 作者:qvyue

在Java面向对象语言当中,我们会用到接口。那么什么是接口呢?这里给小伙伴分享的就是Java中的接口。

接口

接口是Java的一些方法特征的集合,在接口中只包含常量和抽象方法。

接口的实现

接口的语法规则
接口是使用interface修饰,示例:

public interface 接口名{}
public interface Runnale{},public interface IJump{}

类实现接口用implements关键字

class 类名 implements 接口名{}
public class RunImpl implements Runnable{}

接口的命名规则

接口定义一般以able结尾,比如Runnable。或者I开头,如Jump 。
接口的实现一般是Impl结尾,比如RunImpl,JumpImpl;

使用接口的好处

1.接口不能多继承,但是可以多实现。
2.因为接口都为抽象方法,代码耦合度更低。

接口的特点

1.接口不能实例化。

2.接口的实现类:

1)是一个抽象类,可部分实现其中的抽象方法。
2)是一个具体类,这个类必须重写接口中的所有方法。

3.成员变量 :

1)只能写常量;
2)写与不写,强制加修饰符:public static final,不能与private和protected关键字共存。

4.没有构造方法。

5.成员方法:

1)只能是抽象的
2)写与不写,强制加修饰符:public abstract ,不能与private和protected关键字共存。

6.一个类可以实现多个接口、一个接口可以继承多个接口,“,”分隔。

抽象类和抽象方法

在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但并不是所有的类都是来描述对象的。

如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。

比如new Animal(),我们都知道这是一个产生一个动物Aniaml对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如猫、狗来对它进行特定的描述,我们才知道它长成什么样。

在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用表征抽象概念的抽象类是不能实例化。

抽象类使用abstract关键字完成

public abstract class Animal{}

Java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

public abstract void eat();//抽象类中吃的方法

使用抽象类和抽象方法的注意事项

  • 抽象方法必须在抽象类中。
  • 抽象方法不能使用new关键字实例化对象。
  • 抽象方法必须在子类中进行重写。
  • 只要包含抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他的方法。
  • 抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
  • 子类中的抽象方法不能与父类的抽象方法同名。
  • abstract不能与final并列修饰同一个类。
  • abstract不能与private、static、final或native并列修饰同一个方法。

抽象类和接口的区别

成员区别:

1.抽象类:有构造方法,有抽象方法、以及其他与具体类一样的方法和属性
2.接口:没有构造方法,只有抽象方法和常量

关系区别

1.类与类(extends)
继承关系,只能单继承,可以多层继承

2.类与接口(extends、implements)
实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时,实现多个接口。

3.接口与接口(extends)
继承关系,可以单继承,但可以多继承。

设计理念不同

1.抽象类:IS-A,抽象类中定义的是共性功能。
2.接口:HAS-A,接口定义的是扩展功能。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。