抽象类、接口的区别和相似点(一)

简介: 抽象类、接口的区别和相似点(一)

🛫 abstract抽象

🪂 抽象类

 一旦一个类使用abstract修饰之后就代表他是一个抽象类,抽象类的显著特征就是:抽象类无法实例化。有的小伙伴可能就会问了,既然抽象类已经无法实例化对象了,那么它是不是已经没有构造器了?不,抽象类依然有构造器,构造器的作用就是供子类继承的时候进行调用。

image.png

🪂 抽象方法

  方法声明: 使用abstract修饰的方法只能有方法的声明不能有方法体和大括号

image.png

 抽象的类与方法之间的关系: 包含抽象方法的类一定是一个抽象类,但是抽象类中不一定包含抽象方法。而且继承了抽象类的子类必须重写该类中所有的抽象方法(如果超类的超类中也有抽象方法,此时子类也必须重写超类的超类的抽象方法),否则子类也要使用abstract修饰成抽象类,这样的话子类也就无法实例化 image.png abstract关键字不能使用的地方: 关键字只能用来修饰类和方法,无法修饰属性、构造器、代码块等结构。方法的声明中:abstract关键字无法与private修饰符、static关键字、final关键字一起使用,因为私有、静态、final方法无法被子类重写,但是抽象方法必须被子类重写,产生冲突。类的声明中:abstract关键字无法与final关键字一同使用,final类无法被继承那么它内部的抽象方法也就无法被重写,发生冲突

image.png

🛫 interface接口

 接口的存在类似于抽象类,将一些类的共同行为特征作为抽象方法抽取出来,但是他又和抽象类有着本质的不同,接口根本就不是一个类。接下来我们就使用抽象类来类比学习接口的特性

 接口源文件: 接口虽然不是一个类,但是接口在很多方面和类十分相似,比如接口的源文件:接口的源文件也是一个.java文件,可以通过javac命令进行编译生成.class字节码文件。一个.java源文件中只能有一个使用public修饰的类或者接口,这个源文件是以public修饰的接口或者类命名的

image.png

🪂 接口的结构

 JDK 7以及之前,接口中只能定义公共静态常量和公共抽象方法,JDK 8之后接口中还可以定义公共静态方法和公共默认方法,所以说接口中的公共静态常量在声明的时候可以省略public static final,接口中的方法声明可以省略public


静态、默认方法: 接口中的静态方法无法通过接口实现类的对象调用,只能使用接口直接调用,但是接口中的默认方法可以通过接口实现类的对象调用,而且抽象超类中的静态方法也可以使用子类对象调用。子类无法重写覆盖超类或者接口中的静态方法,但是可以重写覆盖接口中的默认方法  接口构造器: 接口中绝对不能出现构造器,这也就意味着接口无法实例化创建对象,虽然抽象类也无法实例化创建对象,但是抽象类中有构造器(供子类调用)

image.png

相关文章
|
3月前
|
Java
接口和抽象类的区别
接口和抽象类的区别
39 6
|
3月前
|
Java
抽象类和接口有什么区别?
抽象类和接口有什么区别?
|
3月前
|
设计模式 搜索推荐 Java
java接口和抽象类的区别,以及使用选择
java接口和抽象类的区别,以及使用选择
38 0
|
12天前
|
Java
抽象类和接口类的区别是什么?
【8月更文挑战第6天】抽象类和接口类的区别是什么?
28 0
|
3月前
|
Java 编译器
抽象类和接口
抽象类和接口
|
3月前
|
Java
抽象类和接口的区别
抽象类和接口的区别
51 0
接口和抽象类有什么区别
接口和抽象类有什么区别
52 0
抽象类和普通类的区别
抽象类和普通类的区别
96 0