一,多态
在设计一个方法的时候,通常希望该方法具备一定的通用性。比如实现一个动物叫的方法,每个动物的叫声是不一样的,可以在方法中接收一个动物类型的参数,当传入猫类对象的时候就发出喵的声音,相对传入狗的对象就发出汪的声音。同一个方法这种应为参数不同而导致执行效果不同的现象叫做多态。
二,向上转型
向上转型—将子类的对象赋值给父类的引用。
一个引用能够调用那些成员(变量和方法),取决于这个对象的类型
一个引用调用的是哪个方法,取决于这个引用指向的对象
public class Animal {
public void bark(){
System.out.println("animal bark");
}
public void bite(){
System.out.println("bite");
}
public void eat(){
System.out.println("food");
}
}
class Dog extends Animal {
public void bark(){
System.out.println("wang");
}
public void bite(){
System.out.println("dog bite");
}
}
class Cat extends Animal {
public void bark(){
System.out.println("miao");
}
}
public class Testbark
{
public static void main(String[] args) {
Animal A = new Dog();//向上转型
A.bark();
A.bite();
A = new Cat();
A.bark();
A.bite();
}
}
输出为:
wang
dog bite
miao
bite
这就是向上转型,Animal A = new Dog();将子类对象Dog转化为父类对象Animal。这个时候A这个引用调用的方法是子类方法。
我的理解就是,比如用Animal定义了A这个引用,里面有这三种方法,Animal A = new Dog()将Dog对象里面的方法赋值给A这个引用。所以最后使用的就是Dog的方法了。这个时候如果执行A.eat();那么最后就会执行父类的eat方法。