不使用单独类的方法视为抽象

从另一个类调用方法时,它是否被视为抽象?因为当main方法创建Dog对象并使用方法animalSound时,用户无法看到正在执行的操作。这被认为是抽象的吗?

Dog.java

public class Dog {
    public void animalSound() {
         System.out.println("Woof");
    }
}

Main.java

public class Main {
    public static void main() {
        Dog d = new Dog();
        d.animalSound();
    }
}
sguidong 回答:不使用单独类的方法视为抽象

从另一个类中调用方法时,它被认为是抽象的吗?

(计算机科学中的)抽象意味着隐藏细节。

因此,您实质上是在问方法 call 是否正在抽象(隐藏)该方法的详细信息。

严格的回答是“否”。该方法的详细信息由方法声明隐藏,而不是由方法 call 隐藏。

但是,从更一般的意义上讲,方法是一种抽象形式是确实如此。


顺便说一句,评论员这样说:

使用继承时,抽象就发挥了作用。

这是不正确的。

  1. 数据抽象不需要继承。实际上,(静态)面向对象语言的经典定义是它支持“继承+数据抽象(或封装)+多态”。继承和数据抽象是正交属性。

  2. 有一些编程语言的示例,这些语言支持不继承的数据抽象。例如,CLU和(取决于您的严格程度 1 )Ada83。

  3. 数据抽象不是唯一的抽象。其他种类包括:

    • 过程抽象;即过程,函数,子例程等。在过程抽象中,我们仅隐藏算法细节。

    • 模块化,可隐藏应用程序某些部分的更大比例的细节。

有关更多详细信息,请参见Abstraction上的Wikipedia页面。


1-在Ada83中,子类型不能添加新字段或覆盖现有方法(“操作”)。参见http://goanna.cs.rmit.edu.au/dale/ada/aln/14_OO.html

本文链接:https://www.f2er.com/2748863.html

大家都在问