襄樊市网站建设,天水网站建设公司排名,ps模板网站,外贸都是在哪些网站做语雀原文链接 文章目录 1、多态类型2、上下转型3、instanceof 1、多态类型
编译时多态#xff1a;方法重载 在编译阶段就已经确定要调用哪个重载的方法 运行时多态#xff1a;方法重写 具体调用哪个子类的方法要到运行的时候#xff0c;结果才能确定#xff0c;多态只针对…语雀原文链接 文章目录 1、多态类型2、上下转型3、instanceof 1、多态类型
编译时多态方法重载 在编译阶段就已经确定要调用哪个重载的方法 运行时多态方法重写 具体调用哪个子类的方法要到运行的时候结果才能确定多态只针对行为方法
2、上下转型
向上转型 上转型对象只能调用父类定义了的变量和方法子类新增的变量和方法访问不到的但可以访问子类重写父类的方法。多态只针对方法 向下转型 向下转型对象可以访问父类里的属性、方法同时也可以访问子类新增的属性、方法。
public class Cat {public String name;public void eat(){System.out.println(Cat.eat());}
}public class YeCat extends Cat{public int age;public void eat(){System.out.println(YeCat.eat());}
}public class HomeCat extends Cat{public int age;public void eat(){System.out.println(HomeCat.eat());}
}public class Main {public static void main(String[] aaa) {// 向上转型Cat yeCat new YeCat();// 向上转型可以访问子类重写的方法yeCat.eat();// 报错向上转型不可以访问子类新增的属性和方法
// System.out.println(yeCat.age);Cat cat new HomeCat();// 向下转型HomeCat homeCat (HomeCat) cat;homeCat.eat();System.out.println(homeCat.age);}
}
3、instanceof
用来检测某个对象是否是某个类的对象结果是boolean值 Cat cat new HomeCat();// 强转能成功HomeCat homeCat (HomeCat) cat;// 类型强转错误HomeCat cannot be cast YeCatYeCat yeCat (YeCat) cat;if (cat instanceof HomeCat){HomeCat home (HomeCat) cat;} else if (cat instanceof YeCat){YeCat ye (YeCat) cat;}