当从另一个类调用一个方法时,它被认为是抽象的吗?因为当main
方法创建Dog
对象并使用方法animalSound
时,用户看不到正在执行的操作。这算不算抽象?
狗.java
public class Dog {
public void animalSound() {
System.out.println("Woof");
}
}
主.java
public class Main {
public static void main() {
Dog d = new Dog();
d.animalSound();
}
}
当从另一个类调用一个方法时,它被认为是抽象的吗?
抽象(在计算机科学中(意味着隐藏细节。
因此,您实际上是在询问方法调用是否在抽象(隐藏(方法的详细信息。
严格的答案是否定的。 方法执行的操作的详细信息由方法声明隐藏,而不是由方法调用隐藏。
然而,在更一般的意义上,方法确实是一种抽象形式。
顺便说一句,一位评论员是这样说的:
抽象在使用继承时会发挥作用。
这是不正确的。
-
数据抽象不需要继承。 事实上,(静态(面向对象语言的经典定义是它支持"继承+数据抽象(或封装(+多态性"。 继承和数据抽象是正交属性。
-
有一些编程语言示例支持无继承的数据抽象。 例如,CLU 和(取决于您的严格程度1(Ada83。
-
数据抽象并不是唯一的抽象类型。 其他种类包括:
-
程序抽象;即过程、函数、子例程等。 在程序抽象中,我们只隐藏了算法细节。
-
模块化,隐藏应用程序某些部分的更大规模细节。
-
有关更多详细信息,请参阅维基百科关于抽象的页面。
1 - 在 Ada83 中,子类型无法添加新字段或覆盖现有方法("操作"(。 请参阅 http://goanna.cs.rmit.edu.au/dale/ada/aln/14_OO.html