Java中抽象类与接口有哪些关键差异?

2026-05-21 09:170阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2111个文字,预计阅读时间需要9分钟。

Java中抽象类与接口有哪些关键差异?

实际上说,它们没有太多的可比性,它们是完全不同的两个东西,它们的抽象不在同一个层面上。但为了更好地让家长理解,还是做了一下比较,结果它们都很抽象(233)。

  其实说实话,没有多大的可比较性,它们是完全不同的两个东西,它们的抽象不在同一个层级上。但是为了让大家更好的理解,还是做一个比较吧,毕竟它们都很抽象(233)。

首先是语法层面上的对比

  1)抽象类跟接口都不能被实例化,因为它们都很虚嘛。但是在访问权限上,两者有一定的区别。

  a、抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。理由很简单,容我慢慢道来。

  抽象方法是没有方法体的,它的目的就是用来继承的,所以如果使用private修饰,不就不能被继承了吗?这就违背了它的设计初衷了,所以不能用private来修饰抽象方法。至于static,用它来修饰的方法可以不实例化就可以直接调用,但是抽象方法没有方法体,使用static修饰就没有意义了。synchronized是用来加锁的,如果修饰类中的方法的话,就相当于用this变量锁,但是抽象类是不能被实例化的,抽象方法也不是在本类中实现而是在子类中实现的,所以锁应该是子类所属,所以抽象方法不能用synchronized关键字修饰;至于native,这个跟abstract关键字本身就是冲突的,abstract声明方法交给子类实现,而native则是交给本地操作系统实现,如果同时出现,那就相当于把实现交给子类,又交给本地操作系统,那最后到底由谁来实现呢?

  综上所述,抽象类中的抽象方法只能用public和protected修饰。

阅读全文

本文共计2111个文字,预计阅读时间需要9分钟。

Java中抽象类与接口有哪些关键差异?

实际上说,它们没有太多的可比性,它们是完全不同的两个东西,它们的抽象不在同一个层面上。但为了更好地让家长理解,还是做了一下比较,结果它们都很抽象(233)。

  其实说实话,没有多大的可比较性,它们是完全不同的两个东西,它们的抽象不在同一个层级上。但是为了让大家更好的理解,还是做一个比较吧,毕竟它们都很抽象(233)。

首先是语法层面上的对比

  1)抽象类跟接口都不能被实例化,因为它们都很虚嘛。但是在访问权限上,两者有一定的区别。

  a、抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。理由很简单,容我慢慢道来。

  抽象方法是没有方法体的,它的目的就是用来继承的,所以如果使用private修饰,不就不能被继承了吗?这就违背了它的设计初衷了,所以不能用private来修饰抽象方法。至于static,用它来修饰的方法可以不实例化就可以直接调用,但是抽象方法没有方法体,使用static修饰就没有意义了。synchronized是用来加锁的,如果修饰类中的方法的话,就相当于用this变量锁,但是抽象类是不能被实例化的,抽象方法也不是在本类中实现而是在子类中实现的,所以锁应该是子类所属,所以抽象方法不能用synchronized关键字修饰;至于native,这个跟abstract关键字本身就是冲突的,abstract声明方法交给子类实现,而native则是交给本地操作系统实现,如果同时出现,那就相当于把实现交给子类,又交给本地操作系统,那最后到底由谁来实现呢?

  综上所述,抽象类中的抽象方法只能用public和protected修饰。

阅读全文