龙空技术网

抽象类和接口的比较

兰亭T恤 104

前言:

今天各位老铁们对“抽象类可以有方法的实现吗”可能比较关注,看官们都想要学习一些“抽象类可以有方法的实现吗”的相关内容。那么小编同时在网上汇集了一些关于“抽象类可以有方法的实现吗””的相关知识,希望同学们能喜欢,我们快快来了解一下吧!

抽象类:

1、抽象方法:只有方法的定义,没有方法体的实现,这种方法就是抽象方法。

图一

如图一所示,方法area()只有定义,没有具体实现,就称为抽象方法。抽象方法用关键字abstract修饰。如果不添加abstract关键字,就会编译报错提醒你加方法体。

图二

2、抽象类:一个类中如果有抽象方法,那么这个类就是抽象类,抽象类要用abstract修饰。如图一所示,类Area就是抽象类。如果一个类含有抽象方法,类不加abstract修饰,就会报错,如图三所示。

图三

不同方法同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,作为抽象方法。

抽象类是用来被继承的,但是一个类只能继承一个方法

图四

图五

图六

class Animal 继承了class Cat 和class Dog , 但是 class Cat 和class Dog 中有同名同参的方法sleep,且在Animal 中并没有重写方法sleep,那在Animal 的实例中调用sleep方法就会出现冲突,jvm就会不知道到底该调用哪一个方法。

接口:

接口在java中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口不能用于实例化对象。接口没有构造方法。接口中所有的方法必须是抽象方法,Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。接口支持多继承总结:

A类继承了B抽象类表示它“是什么”!

A类实现了C接口表示它“有什么功能”!

1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

标签: #抽象类可以有方法的实现吗