1.什么是多态?
多态就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态,从一定角度来看,封装和继承几乎都是为多态而准备的。
2.为什么要运用多态?
多态不仅能让程序设计更加易实现,也更容易维护和扩展。
3.如何使用多态?
实现多态的必要条件
子类必须要继承父类(需要满足继承关系)
父类引用指向子类引用
注意点
多态是方法的多态,属性没有多态性。
父类引用指向子类实例时,可以调用子类重写父类的方法以及直接继承父类的方法,无法调用子类特有的方法
静态static方法属于特殊情况,静态方法只能继承,不能重写。调用的时候用谁的引用,则调用谁的版本
public class People {
String name;//名字
int age;//年龄
int sex;//性别
String role;//职业
//有个doing方法,表示要做的事
public void doing(String role){
if("doctor".equals(role)){
System.out.println("救死扶伤");
return;
}
if("programmer".equals(role)){
System.out.println("不掉头发赚钱");
return;
}
if("teacher".equals(role)){
System.out.println("教书");
return;
}
}
}
4.什么是重写?
父类中的方法不能灵活的满足子类的需求,重写达到要求
重写的注意点
方法名相同,参数列表相同,返回值类型相同或者是其子类,访问修饰符不能严于父类
如果子类重写了父类的方法,则执行的就是子类重写过后的方法
public class Test {
void Xiaoniao (){
System.out.println("小鸟会飞");
System.out.println("麻雀在天上飞");
}
}
class Yu extends Test{
public static void main(String[] args){
Yu cat=new Yu();
Yu.Xiaoniao();
}
void Yu(){
System.out.println("鱼会游泳");
System.out.println("金鱼在水里游泳");
}
}
5.关键字abstract
抽象的,可以修饰类和方法,修饰的类叫抽象类,修饰的方法叫抽象方法,声明一种规定,让子类必须要重写的内容
abstract注意点:
abstract 修饰的方法没有方法体,必须在抽象类中。抽象类中既可以有抽象方法,也可以有普通方法 父类中申明的抽象方法一定要被子类重写,如果子类没有都重写,那么该子类也要是抽象类
其他没有重写的方法再由子类继续重写
抽象类不能创建对象