1.why need this conception?
需要让不同的类共享某些行为的情况。eg:电器共享开关行为
想象一下,你正在设计一款软件,用于控制各种家用电器,比如电视、空调和音响。这些设备都有一个共同的行为,那就是“开”和“关”。
解决方案: 使用接口,我们可以定义一个名为“可开关”的接口,它包含“开”和“关”两个方法。然后,电视、空调、音响和智能灯泡等类都可以实现这个接口,而不需要继承一个共同的基类。
通俗例子:
- 接口:“可开关”(包含方法:开(), 关())
- 实现类:
- 电视:实现“可开关”接口,提供具体的开关电视的代码。
- 空调:实现“可开关”接口,提供具体的开关空调的代码。
- 音响:实现“可开关”接口,提供具体的开关音响的代码。
- 智能灯泡:实现“可开关”接口,提供具体的开关灯泡的代码。
通过这种方式,我们可以轻松地添加新的设备类型,而不需要修改现有的代码,也不需要担心不同设备之间的行为冲突。这就是接口在Java中的作用和为什么我们需要它们的原因。
public class second {
public interface Animal { //各种动物叫接口
void speak();
}
public static class Dog implements Animal {//狗叫实现接口
@Override
public void speak() {
System.out.println("Woof!");
}
}
public static class Cat implements Animal {//猫叫实现接口
@Override
public void speak() {
System.out.println("Meow!");
}
}
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
dog.speak(); // Outputs: Woof!
cat.speak(); // Outputs: Meow!
// You can also store them in a common list
Animal[] animals = { new Dog(), new Cat() };
for (Animal animal : animals) {
animal.speak(); // Outputs: Woof! Meow!
}
}