2024.8.2
1.接口
接口即为一个抽象的方法,此方法定义了很多种行为,可供类们去实现,而避免了使用多种重复的else……if,while等即时运算。
抽象,即为更上层的概念。比如“男人”的抽象为“人”,“人”的抽象为动物,这就是一个统领的节点。
以下为示例
public class Demo1 {
public interface animal{//定义一个接口方法
public void eat();//定义两个公共方法
public void bellow();//等待继承此接口的类来实现这两个方法
public static void al(){
System.out.println("此项为接口的定义!");
}
}
public class bear implements animal{
public void eat(){//实现animal中的eat方法
System.out.println("熊正在干饭!");
}
public void bellow(){//实现animal中的bellow方法
System.out.println("熊正在吼叫!");
}
public String pack(){//在类中额外创建一个方法
return "好多动物!";
}
}
}
从此可以看出接口既是可以被下层对象可使用的另一种“继承”。
2.多态
一、定义
- 多态(Polymorphism)字面意思为“多种形态”,在编程中,它指的是相同的操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
- 简单来说,多态就是允许将子类类型的指针赋值给父类类型的指针(向上转型),然后通过这个父类类型的指针调用实际子类对象的成员函数,此时发生的是动态绑定(即运行时绑定),根据对象的实际类型来调用相应的函数。
class Animal {
// 父类中的方法
public void makeSound() {
System.out.println("某种声音");
}
}
// Dog类继承自Animal类
class Dog extends Animal {
// 重写父类中的方法
@Override
public void makeSound() {
System.out.println("汪汪");
}
}
// Cat类继承自Animal类
class Cat extends Animal {
// 重写父类中的方法
@Override
public void makeSound() {
System.out.println("喵喵");
}
}
// 测试多态性
public class PolymorphismTest {
public static void main(String[] args) {
// 父类引用指向子类对象
Animal myDog = new Dog();
Animal myCat = new Cat();
// 调用同一个方法,但行为取决于对象的实际类型
myDog.makeSound(); // 输出:汪汪
myCat.makeSound(); // 输出:喵喵
// 列表存储不同类型的对象
Animal[] animals = new Animal[2];
animals[0] = new Dog();
animals[1] = new Cat();
for (Animal animal : animals) {
animal.makeSound(); // 运行时根据对象的实际类型调用对应的方法
}
// 输出:
// 汪汪
// 喵喵
}
}
此项结果中,makesound被猫和狗的叫声方法重写,从而在外是相同的调用方法,实际上却是没有不同的实现方法。
这就是多态的一个应用场景。