多态
是指同一对象在不同时刻呈现出来的不同状态
1.多态是方法的多态,与属性无关
2.多态存在的条件:
- 存在继承或者实现关系
- 子类或实现类必须重写父类方法(重写才能体现多态)
- 父类引用指向子类对象
注意:使用多态之后,变量使用父类,方法使用子类(静态方法除外,静态方法使用父类的静态方法,同时体现出静态方法不能)
//创建一个Animal父类
class Animal{
private String name;
private int age;
public void eat() {
System.out.println("动物正在吃饭");
}
}
//创建一个Dog类继承Animal类,且重写父类方法
class Dog extends Animal{
private String name;
private int age;
//重写为继承中知识点,注意重写格式
public void eat() {
System.out.println("狗正在吃饭");
}
/*
* 子类特有方法,不能在主方法中直接使用
* 需要向下转型
*/
public void sleep() {
System.out.println("狗正在睡觉");
}
}
public static void main(String[] args) {
//实例化父类
Animal a = new Dog();//父类引用指向子类对象
a.eat();
//向下转型实现使用子类特有方法
//向下转型格式: 子类类型 变量名 = (子类类型) 父类变量名
Dog dog = (Dog) a;
dog.sleep();//强转之后就可以调用特有方法
}
这里只介绍了继承的多态使用,实现类(实现类为接口知识要点)实现多态是一样的方法,那么我们为什么要使用多态呢?
多态的优点:
1.提高代码的复用性(将公共使用的方法封装为工具类)
2.提高代码的扩展性(可以重写之后扩展代码)
多态的缺点:
不能直接调用子类特有的方法,如需调用则要向下转型。
对于新手来说先掌握这一知识点,到后面积累到一定的开发经验就会知道它存在的意义了
学无止境。老狗在此欢迎各位大神指出鄙人之不足,提出你们宝贵意见。
- 转载请注明出处