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

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

这个网站须要必定的技术去访问,可是为何说他好呢,由于他号称全球最大的高质量创做型内容平台。不少知识小编都是在这里学习到的,也了解到国外程序员的一些习惯,其实和咱们国内的也差很少,可是经过英文说出来,感受还真有那么点不同吧。程序员

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

标题:「Java Abstract Class What Is It Good For?」设计模式

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

做者:Tome Henricksenapp

发布时间:2019-10-15ide

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 发布!

相关文章
相关标签/搜索