【Medium翻译】Java抽象类有什么用?

今天安利一个网站,其实很多朋友应该早就知道了,我之前ARTS打卡,英文文档的 很多出处就来自于这个网站,叫 「Medium」

这个网站需要一定的技术去访问,但是为什么说他好呢,因为他号称全球最大的高质量创作型内容平台。很多知识小编都是在这里学习到的,也了解到国外程序员的一些习惯,其实和我们国内的也差不多,但是通过英文说出来,感觉还真有那么点不一样吧。

小编不才,今天尝试下翻译这里的好文,期待和你的交流。

标题:「Java Abstract Class What Is It Good For?」

文章来源:https://medium.com/swlh/java-abstract-class-what-is-it-good-for-880cf0117648

作者:Tome Henricksen

发布时间:2019-10-15

Java抽象类使许多Java开发人员望而却步。让我们了解一下它对我们有什么作用以及如何使用。

抽象主义:无原则者出售的未经惩罚的产品。Al Capp

我猜您听说过称为ADD或注意力缺陷障碍的疾病。在最近的巴黎之旅中,我儿子和我发现我们正遭受另一个名字相似的疾病的困扰。缺乏艺术障碍。

我们一起看看绘画和雕塑,发现它们毫无生气。我女儿在d‘Orsay享受美食的地方,我们在寻找美食广场。在这里,我们享用了浓缩咖啡和鲜榨橙汁。

Java抽象类

Java具有不完整的抽象类。它们不能像常规类那样实现,必须对抽象类进行子类化才能使用。在这些类中,我们可以声明抽象方法。抽象类类似于Java中的接口。让我们更深入地进行比较。

比较

像接口一样,抽象类无法实例化。如果接口仅包含方法签名,则抽象类可以包含方法主体。抽象类可以声明非静态和final字段。

Java教程在使用抽象类时提供了一些很好的指导。原文如下(这里不进行翻译)When we “want to share code among several closely related classes” or “expect that classes that extend your abstract class have many common methods or fields”. Interfaces should be used when “expect that unrelated classes would implement your interface” or “want to specify the behavior of a particular data type”.

Java抽象类示例

像所有优秀的编码员一样,让我们着手编写一些代码。首先,我们可以看一个示例抽象类来入门。

package com.myitcareercoach;

public abstract class Battery {
    int volt;
    int amps;
    void charge(int chargingTime) {
        // shared code
    }

    abstract boolean fullyCharged();

    abstract boolean isTooHot();

}

这个Battery 抽象类有一个实现的方法和两个抽象方法。并且还定义了两个字段。

package com.myitcareercoach;

public class ComputerBattery extends Battery {

    @Override
    boolean fullyCharged() {
        // TODO Add some code here!
        return false;
    }

    @Override
    boolean isTooHot() {
        // TODO Add some code here!
        return false;
    }

}

ComputerBattery是一个具体的Java类。因为它继承了Battery类,所以它需要实现Battery定义的两种抽象方法

抽象和接口?

抽象类甚至可以实现接口。这似乎是将意大利面和土豆泥混合在一起,但是,这是合法的!(老外就是幽默啊,哈哈

public interface Student {

       public void setSchedule();

       public void registerForClass(String className);

}

让我们采用Student 接口并将其混合在抽象类中

public abstract class ProbationaryStudent implements Student {

    @Override
    public void setSchedule() {
        // implemented method
    }

    // not going to override registerForClass() method

}

在我们的ProbationaryStudent中,我们不需要实现Student接口中的所有方法。因为该类被标记为抽象,所以这种情况是可能的。

Main?

您是否认为抽象方法中的main方法可以运行?

public abstract class DoesItRun {

    public static void main(String[] args) {
        System.out.println("Does it run?");
    }

}

起先我也不认为会,但是实际上,它确实可以运行。我建议您自己尝试一下。如您所见,抽象类在Java中占有一席之地。与interface(接口)相似,但使用方式不同。

您在哪里使用过Java接口?

结尾

在这里,这篇翻译就结束了。这是篇Java的基础入门级文章,但是也体现出了Java abstract(抽象类)的重要性,以及简单的入门。

比如abstract(抽象类)是需要用继承的方式来的,并且定义的每个抽象方法在子类中都需要实现;interface(接口)是用来实现的,子类中并不需要实现全部的方法。

还有一个小彩蛋,在抽象类中,也是能执行main函数的哦。

这次,小编小试牛刀,后续会翻译一些我认为更好的文章出来,和大家一起进步,一起加油。喜欢的话,给点鼓励噢~

推荐阅读:

Leetcode算法【34在排序数组中查找元素】

写了很久,这是一份适合普通大众/科班/非科班的『学习路线』

长久养成的打卡习惯可千万不能丢呀

Java 中的 final、finally、finalize 有什么不同?

求求你别再“从入门到放弃了”,贵在坚持

「奔跑吧攻城狮」感谢大家的关注,现在后台回复「设计模式」赠你小编精心挑选设计模式书籍。小编想打造一个高质量交流群,回复「加群」或右下角点击「撩我 -> 一起学」解锁。

本文由博客一文多发平台 OpenWrite 发布!

原文地址:https://www.cnblogs.com/dimple91/p/11811304.html

时间: 2024-08-29 05:10:04

【Medium翻译】Java抽象类有什么用?的相关文章

java抽象类和接口

1.抽象类 抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类.抽象类使用关键字abstract 修饰,语法如下: abstract class 类名{ 类体; } 抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明.抽象方法使用关键字abstract 修饰,格式如下: public abstract 返回类型 方法名([参数列表]); 抽象类和抽象方法的具体规则如下: 1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstr

JAVA学习经验--总结JAVA抽象类和接口

* --总结JAVA抽象类和接口  * 1.抽象类:  *             1>抽象类可以修饰方法,修饰类,但不能修饰属性,不能被实例化  *             2>抽象类可以被继承,只能是单继承,继承抽象类必须实现抽象方法  *             3>抽象类不能被static ,fina,private一起修饰  *             4>抽象类是有多态性的  *  * 2.接口:  *             1>接口是一种特殊的抽象类,不能被实

java抽象类和接口的区别(转载)

1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点. 2.一个抽象类的实现只能由这个抽象类的子类给出,也就是

浅析Java抽象类和接口的比较

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理.本

JAVA抽象类和接口的深入探讨

Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. 本文将从下面几个方面深入探讨一下Java 抽象类和接口 一.抽象类语法及规范 二.接口的语法及规范 三.抽象类和接口的区别 ,将从语义细节及设计层面两方面来描述 本文由本人查阅资料并结合自己理解所作,如果有理解不到位的地方,欢迎各位斧正. 一.抽象类 抽象类使用 abstract class 来定

Java抽象类/抽象方法

java抽象类的特点: *抽象类无法被实例化 *子类继承抽象类然后实例化子类 *子类继承了抽象类剋必须实现抽象类的中的抽象方法 *抽象类的定义 abstract class *** *抽象方法的定义:public abstract void ***():ps:抽象方法不能有方法体 --------------------------------------------------------------------------- 下面我们来代码实现下: 先创建一个.java文件 然后我们定义个抽

Java 抽象类 抽象方法 接口

#抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量.成员方法和构造方法的访问方式和普通类一样. 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用.也是因为这个原因,通常在设计阶段决定要不要设计抽象类. 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法. 在Java中抽象

java抽象类及接口

Java抽象类: 抽象类特点:抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量.成员方法和构造方法的访问方式和普通类一样. 由于抽象类不能实例化对象,所以抽象类必须被extends [抽象类]方式 继承才能被使用. 抽象类表示的是一种继承关系. (总结就是:抽象类里面设计跟普通类一样,但就是不能用来实例化对象,所以需要被继承类 extends [抽象类] 继承来使用) 创建方式: public abstract class a{ ......可以是有变量方法还有构造方法等等.....

java 抽象类、接口的使用

理解抽象类 abstract class和interface在Java语言中都是用来进行抽象类(本文 中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法, 请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢? 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这