java - 具有所有具体方法的普通类和具有所有具体方法的抽象类有什么区别

标签 java abstract-class

假设一个抽象类拥有所有三个方法,并且都是具体方法,而普通类则拥有所有三个方法,而且都是具体方法。

它们在应用程序中有何区别,因为它们现在基本上服务于相同的目的。为什么这是允许的?

拿一个抽象类来说:

abstract class A {
    public void open() {} 
    public void close() {} 
    public void pull() {}
}

还有一个普通的类(class):

class A {
    public void open() {} 
    public void close() {} 
    public void pull() {}
}

它们之间有什么区别,因为如果我们删除abstract关键字则两者相同。

谁能解释一下吗?

最佳答案

具体类可以被实例化,但抽象类无论如何都不能实例化。编译器不关心类是否有抽象成员。抽象类无法实例化!当您使用匿名内部类实例化没有抽象成员的抽象类时,花括号中不需要任何内容​​。那是因为所有的方法都被实现了。我想这算是另一个区别。

关于java - 具有所有具体方法的普通类和具有所有具体方法的抽象类有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32423883/

相关文章:

java - WebSphere Liberty Profile 在哪里提取应用程序?

java - 使用 ffmpeg 将视频转换为 mp3 音频

java - 尝试编写一个方法来检查 JAVA 中的用户输入,得到 NoSuchElementException

C++通过继承函数实现继承的抽象函数

c# - 为什么我们的 C++ 类是强制抽象的?

java - 如何清除android中的手势?

Java - "@Override"有什么用?

typescript 重写抽象方法,返回无效

java - 如何将此父类(super class)更改为抽象类而不出现实例化异常?

c# - 允许子类中的字段的类型是父类中字段类型的后代