gpt4 book ai didi

java - java中的抽象和数据隐藏

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:25 24 4
gpt4 key购买 nike


我试图理解 java 中抽象的概念。当我阅读一些教程时,他们说抽象是一个过程,您只显示“相关”数据并向用户“隐藏”对象的不必要细节。


这是抽象类如何工作的一个简单示例。

public class Demo {

public static void main(String[] args) {
Animal a = new Dog();
a.sound();
}
}

abstract class Animal {
abstract void sound();
}

class Dog extends Animal {
@Override
public void sound() {
System.out.println("woof");
}
}

我知道虽然抽象类我们可以在子类中实现通用方法,比如 sound() 方法。

我不明白的是,这如何帮助隐藏数据和仅查看必要的数据。

请向我解释一下这个概念。

如果您有很好的例子,请也包括在内。

最佳答案

在您的示例中,您创建了一只,然后将其用作动物。在这种情况下,抽象不是很有用,因为您知道变量 a 总是指狗。现在假设在其他一些类中你有一个方法soundTwice:

class OutsideWorld {
static void soundTwice(Animal a) {
a.sound();
a.sound();
}
}

在这里你不知道Animal a指的是什么类型,但你仍然可以发出两次声音。

更新

我添加这个类是因为类 Demo 没有隐藏太多:它需要了解类 Dog 因为它创建了它的一个实例。另一方面,类 OutsideWorld 则不知道:它只知道类 Animal 以及类 Animal 公开的内容。它甚至不知道类 Dog 的存在。

我们现在可以编写一个 Cat 类,使用不同的方法 sound ("meow") 实现,我们仍然可以使用相同的 soundTwice 方法与 Cat

然后我们可以重写 Demo 类:

public class Demo {
public static void main(String[] args) {
Animal a = new Dog();
OutsideWorld.soundTwice(a);
a = new Cat();
OutsideWorld.soundTwice(a);
}
}

当然,这会产生输出:

woof
woof
meow
meow

关于java - java中的抽象和数据隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com