package zuoye;
/**
* 多态
* 多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同
* 多态的要点:
* 1:多态是方法的多态,不是属性的多态(多态与属性无关)
* 2:多态的存在要有三个必要条件:继承,方法重写,父类引用指向子类对象。
* 3:父类引用指向子类对象后,用该父类引动调用子类重写的方法,此时多态就出现了
* @author 110
*
*/
public class parctice4 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Animal a = new Animal();
Animal d = new Dog();//Dog可以自动转为animal,编译器认为这是Animal,自动向上转向
//d.seedoor();此处无法调用,因为编译器认为你这个是Animal,而不是dog;
Dog d2=(Dog)d;//强制向下转型
d2.seedoor();//在这里可以调用
/*
* Animal c = new Cat();
* Dog d3 = (Dog) c;
* d3.seedoor();
* 此处编译会通过,但是会发生运行错误,类型转化错误,不能把猫转为狗
*/
animalcry(a);//父类类型指向子类对象
animalcry(d);
animalcry(new Cat());
/*
Animal s = new Dog();
Cat cc= (Cat)s;
animalcry(c
*/
}
static void animalcry(Animal a) {
a.shout();
}
}
class Animal{
public void shout() {
System.out.println("叫了一声!");
}
}
class Dog extends Animal {
public void shout() {
System.out.println("汪汪汪");
}
public void seedoor(){
System.out.println("seedoor");
}
}class Cat extends Animal{
public void shout() {
System.out.println("喵喵喵");
}
}
多态,向上转型和向下转型
最新推荐文章于 2023-04-05 09:00:00 发布