【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函数的哦。
这次,小编小试牛刀,后续会翻译一些我认为更好的文章出来,和大家一起进步,一起加油。喜欢的话,给点鼓励噢~
推荐阅读:
Java 中的 final、finally、finalize 有什么不同?
「奔跑吧攻城狮」感谢大家的关注,现在后台回复「设计模式」赠你小编精心挑选设计模式书籍。小编想打造一个高质量交流群,回复「加群」或右下角点击「撩我 -> 一起学」解锁。
本文由博客一文多发平台 OpenWrite 发布!
【Medium翻译】Java抽象类有什么用?的更多相关文章
- java抽象类与接口区别
java抽象类与接口区别: abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstr ...
- Java抽象类和接口的区别(好长时间没看这种文章了)
Java抽象类和接口的区别(好长时间没看这种文章了) abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
- java抽象类
Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...
- Java接口、Java抽象类、C++抽象类的区别
由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下: 接口: 接口用interface关键字定义, 名字一般使用-able形式的形容词. 接口通常定义抽象方法和 ...
- java抽象类与接口的区别及用法
java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...
- Java 抽象类与接口总结
一.为什么要使用抽象类?有什么好处? 抽象类是通用接口.不同的子类可以用不同的方法表示此接口.通用接口建立起一种基本形式,以此表示所有子类的共同部分. 必须覆写父类abstract抽象的方法 含有抽 ...
- JAVA抽象类和接口的深入探讨
Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. ...
- java抽象类和接口的区别(转载)
1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入 ...
- 我对面向对象设计的理解——Java接口和Java抽象类
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...
随机推荐
- 【干货总结】:可能是史上最全的MySQL和PGSQL对比材料
[干货总结]:可能是史上最全的MySQL和PGSQL的对比材料 运维了MySQL和PGSQL已经有一段时间了,最近接到一个数据库选型需求,于是便开始收集资料整理了一下,然后就有了下面的对比表 关键词: ...
- 更该clover软件图标(任务栏显示)
1.首先介绍一个Clover软件,Clover 的功能就是给资源管理器加上 Chrome 一样的标签页,像下面这样,你会爱上它的效率,和浏览器一样的操作方式. 2.它自带的系统图标比较丑(虽然作者说挺 ...
- ThinkPHP框架快速开发网站
使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助 ...
- Java为什么需要四种引用?
首先抛出一个问题:在闲暇时间收拾自己家里的时候,对某一件物件要不要丢弃的问题上,是否有过食之无味,弃之可惜的感觉? 同样的,JVM在回收Java对象的时候,是否对对象实例也有食之无味,弃之可惜的感受? ...
- classpath:类路径
classpath:可以用于web.xml中获取spring springmvc配置文件的位置 用于sprnig配置文件中获取mapper的位置 classpath:可以获取到java目录下的,res ...
- SQL提高查询效率的几点建议
1.如果要用子查询,那就用EXISTS替代IN.用NOT EXISTS替代NOT IN.因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高.无论在哪种情况下,NOT IN都 ...
- 算法学习之剑指offer(七)
题目1 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P% ...
- 大型php网站性能和并发访问优化方案
网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢? ...
- django搭建BBS-登入&验证码的生成
django搭建BBS-登入&验证码的生成 基于注册完成后 文件结构 app 接口 migrations __inint__.py admin.py 管理员页面注册表单用 apps.py bb ...
- CSS中颜色表示方法及颜色表
一:直接用颜色的英文名表示 二:RGB(x,y,z)函数表示,x.y.z.分别是红色.绿色.蓝色的值,x,y,z∈[0,225],亦可用百分比表示:对比rgba(x,y,z,a)中a是alpha通道设 ...