JavaRush /Java 博客 /Random-ZH /为什么需要接口?
Павел
第 11 级

为什么需要接口?

已在 Random-ZH 群组中发布
为什么需要接口? 为什么需要接口继承? 为什么需要多态性? 适合那些阅读并理解如何制作界面,但不明白为什么的人。

免责声明:在本文和后续文章中,类和方法的命名将以俄语给出。

当谈到面向对象编程 (OOP) 的原则:多态性、继承和封装时,使用现实世界的类比会很有帮助。OOP 的一大优点是我们可以在程序中模拟真实宇宙的一部分。让我们模拟伊万诺夫一家:爸爸妈妈和男孩佩蒂亚Petya爸爸那里 继承了喝茶时发出声音的习惯,从妈妈那里继承了读书时撅起嘴唇的习惯。如果我们尝试将这种情况实现到程序中,我们最终会得到三个类:
class Папа
class Мама
class Петя
爸爸妈妈 有一些习惯需要遗传给皮特。习惯是某种行为 - 因此最好将它们作为方法在软件世界中实现:爸爸优先:
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
现在妈妈
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
如果我们谈论继承,那么编写这样的代码是合乎逻辑的:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
也就是同时从爸爸妈妈那里 继承Petya 。如果你这样写,编译器会报错,因为Java无法实现多类继承。顺便说一句,在 C++ 中可以,但在 Java 中不行,因为多重继承会出现大问题:网上有详细写。 为了解决这个“不可能”的问题,Java 提供了接口。对于习惯,我们将提出我们自己的界面。即使是两个:它们看起来像这样: 为什么需要接口? - 1
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
在接口中我们只描述了习惯,并没有描述它们具体是做什么的,因为我们会把具体的实现写在类中。首先,让我们给爸爸妈妈他们法律习惯。
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
现在,把爸爸妈妈的习惯同时 转移给皮特是绝对合法的
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
也就是说,Java 中的多重实现(通常称为实现)是很有可能的。 为什么需要接口? - 2接口的含义现在应该很清楚了——在Java中,您可以使用接口实现多重继承。如果我们进一步发展情况,例如:毕竟,爸爸妈妈可能有他们没有遗传给Petya的习惯,而Petya也可能有他自己的个人习惯。在接下来的几集中,您将学习如何将这个重要的圣巴巴拉转移到爪哇飞机。这并不是理解接口的唯一例子,如果你还没有读过下面的文章,那么一定要读一下: Java中的接口(如果没有打开,可以退出个人资料或者以隐身模式阅读) 为什么需要接口Java - 实现本文中的所有示例,并更改接口和类中的方法:方法名称、签名(方法作为输入的内容)、方法的输出类型。自己理解: - 用类和抽象类实现接口时的区别;- 默认方法。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION