当前位置:网站首页>“抽象类”与“接口”有什么区别?
“抽象类”与“接口”有什么区别?
2022-08-08 06:28:00 【记得爱蓝色】
1、从定义方面讲:
用abstract关键字修饰的类就是抽象类,抽象类无法实例化。
使用interface关键字定义接口。
那么“抽象类”与“接口”有什么区别呢?我们将从不同方面来进行比较:
2、从继承方面讲:只能extends继承一个类,可以implements实现多个接口
class Student extends PresonA implements PersonB,PersonC{
}
abstract class PresonA{
//抽象方法
public abstract void run();
public abstract String getName();
}
interface PersonB{
//抽象方法(在接口中定义抽象方法,可以不加abstract关键字)
public void runB();
public String getNameB();
}
interface PersonC{
public void runC();
public String getNameC();
}3、从定义方法上讲:“抽象类”与“接口”都可以定义抽象方法,而在定义普通方法时,从JDK1.8开始,接口允许定义默认方法(带有方法体的方法)
public default void dosth() {
//默认方法,允许存在方法体,相当于“接口中的普通方法”
}4、从构造方法上讲:抽象类中可以定义抽象方法,而接口中不允许有抽象方法。
5、从定义成员变量上讲:“抽象类”可以实例化成员变量,而接口中的成员变量是“常量”,不允许修改。
public class Demo03 {
public static void main(String[] args) {
PresonA.max = 23;
PresonA.max =44;
}
}
abstract class PresonA{
//成员"变量"
public static int max = 45;
//常量
public static final int MAX = 45;
}
interface PersonB{
//成员变量
//常量
public static int max = 0; //不允许修改
}需要补充的是:
//父类的引用,指向子类的对象
PresonA pa = new Student();
pa.run();
pa.getName();
//接口的引用,指向实现类的对象
PersonB pb = new Student();
pb.runB();
pb.getNameB();边栏推荐
猜你喜欢
随机推荐
Unity 物体颜色渐变效果(判断逻辑实现)
【Android安全】手机Root、刷机、救砖常用命令
在字符串中查找子字符串
tcpdump进行IP抓包
Golang 简单的读负载均衡
minikube metrics-server HPA 自动扩缩容错误
Unity object color gradient effect (judgment logic implementation)
datetime模块,os模块,sys模块,json模块
【数据序列化】扁平结构与嵌套结构
C# Unicode (Universal Code) text conversion
[总结] Unity Lightmap使用总结
Lettcode linked list OJ question sharing and explanation
网络安全笔记第二天day2(等级保护)
【图形学】13 UnityShader语义(一)
webAPI
【图形学】12 UnityShader语法入门
Day37------网络
Unity_雷达图(属性图)+ UI动画
顺序循环队列的创建和基本应用
Leetcode topic sharing and explanation



![[Unity] GPU动画实现(二)——网格合并](/img/b3/3216d26674806172417f0df3cfce6c.png)





