JAVA多态
多态的好处:
减少代码的冗余性
多态中的两种类型转换:
向上转型,也叫做自动类型转换,构成多态
-
使用:
- 父类型类 引用名称 = new 子类类名();
-
当是多态时,该引用名称只能访问父类中的属性和方法,但是优先访问子类重写以后的方法
向下转型(强制类型转换)
-
当是多态时,并且访问子类独有的属性或方法时,则必须进行向下转型
-
使用:
- (父类)Pet p=new Dog();(子类)
- Dog d=(Dog)p;
-
建议向下类型转换时,先进行判断,当合法则在转为对应的类型,则使用instanceof关键字
- P=new cat();
if(p instanceof Dog){
Dog dog =(Dog)p;
}else if(p instanceof cat) {
Cat cat=(Cat)p
}
- P=new cat();
递归:
方法自己调用自己,必须保证有出口
练习递归计算n!:
-
public static int mul(int n){
if (n==0||n==1){return 1;} return n*mul(n-1);
}
多态:
语法格式:
- 父类类名 引用名称 = new 子类类名();
注意:
- 当时多态时,该引用名称只能访问父类中的属性和方法(但是优先访问子类重写后的方法)
将多个对象调用同一个方法,得到不同的结果
满足多态的条件:
- 子类必须继承父类
- 子类重写父类的方法