Java抽象类和方法

小编 2026-06-08 阅读:150 评论:0
用了Java很多年,很少涉及到抽象类的使用。现在快毕业了,找工作的时候,首当其冲的面试题...

用了Java很多年,很少涉及到抽象类的使用。现在快毕业了,找工作的时候,首当其冲的面试题就是“Java 抽象类和接口的区别”。

好吧,为了以后自己方便,也为了看到这篇文章的读者方便,引用一下官网的解释。


An abstract class is a class that is declared abstract—it may or may not include abstract methods.

抽象类可以含有非抽象方法,也可以不含抽象方法。

Abstract classes cannot be instantiated, but they can be subclassed.

抽象类可以被继承,但不能new。

An abstract method is a method that is declared without an implementation (without braces, and followed by a semicolon), like this:

抽象方法没有方法体,以分号结尾,如下:

abstract void moveTo(double deltaX, double deltaY);

If a class includes abstract methods, the class itself must be declared abstract, as in:

public abstract class GraphicObject {   // declare fields   // declare non-abstract methods   abstract void draw();}

When an abstract class is subclassed, the subclass usually provides implementations for all of the abstract methods in its parent class. However, if it does not, the subclass must also be declared abstract.含有抽象方法的类必须是抽象类。他的子类必须实现他的所有抽象方法,否则子类必须声明为抽象的。



以上是抽象类和抽象方法的基本概念。接下来看一下他和接口的关系:说不定会让你吃一惊。


 All of the methods in an interface (see the Interfaces section) are implicitly abstract, so the abstract modifier is not used with interface methods (it could be—it's just not necessary).接口中的方法都是抽象方法,虽然没有声明。当日声明了也是可以的。

Unlike interfaces, abstract classes can contain fields that are not static and final, and they can contain implemented methods. Such abstract classes are similar to interfaces, except that they provide a partial implementation, leaving it to subclasses to complete the implementation. If an abstract class contains only abstract method declarations, it should be declared as an interface instead.

如果一个抽象类只含有抽象方法,那就把它声明为接口吧。这就是共同点。否则的话,抽象类中的非抽象方法可以有部分功能代码,子类可以完成这些方法。抽象类中的变量也无需是静态和常量。而接口中的变量都是final的。

Multiple interfaces can be implemented by classes anywhere in the class hierarchy, whether or not they are related to one another in any way. Think of Comparable or Cloneable, for example.

By comparison, abstract classes are most commonly subclassed to share pieces of implementation. A single abstract class is subclassed by similar classes that have a lot in common (the implemented parts of the abstract class), but also have some differences (the abstract methods).

抽象类虽然像接口,但他毕竟是一个类,就有类的特征。而接口是给实现他的泪增加属性的。可能是借口和具体类直接的分立太明显了,所以SUN提出了抽象类吧。



曾经听一哥们说:

抽象类被继承后,你可以往抽象类中添加非抽象方法,这样他的子类都具有了这些方法。而接口被实现后,往里面增加方法后,子类必须重写,否则编译出错了。这就是他们看起来的大区别吧。





版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表