Java多态及产生条件
原创约 641 字大约 2 分钟...
101-Java多态及产生条件.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
- 多态
- 简单来说,多态是具有表现多种形态的能力的特征
- 同一个实现接口,使用不同的实例而执行不同操作

不同的对象对同一行为作出的不同响应
多态存在的三个必要条件
- 要有继承,或实现
- 要有重写
- 父类引用指向子类对象
一旦满足以上3个条件,当调用父类中被重写的方法后,运行时创建的是哪个子类的对象,就调用该子类中重写的那个方法
在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际类型调用相应的方法
多态的优点
- 简化代码
- 改善代码的组织性和可读性
- 易于扩展
示例代码:
package 引用类型的类型转换;
public class Animal {
public void eat() {
System.out.println("eating....");
}
}
package 引用类型的类型转换;
public class Dog extends Animal {
public void showName() {
System.out.println("一只Dog");
}
@Override
public void eat() {
// super.eat();
System.out.println("eat 骨头。。。");
}
}
package 引用类型的类型转换;
public class Cat extends Animal {
public void cry() {
System.out.println("喵喵叫。。。。。");
}
@Override
public void eat() {
// super.eat();
System.out.println("eat 鱼。。");
}
}
package 引用类型的类型转换;
public class Test2 {
/**
* 多态产生的条件:
* 要有继承,或 实现
* 要有重写
* 父类引用指向子类对象
* <p>Title: main</p>
* <p>Description: </p>
* @param args
*/
public static void main(String[] args) {
//这里不能调用cry()方法,因为将其上溯造型成咯Animal,
//Animal里有有 这方法才有,Animal里没有就 没有
// Animal a = new Cat();
//
// Cat c = (Cat) a;//下溯造型
//
// c.cry();
Animal a = new Animal();
a.eat();
Animal b = new Cat();
b.eat();
Animal c = new Dog();
c.eat();
/**
* 调用相同的方法,其行为是不一样的行为,这种行为叫做多态
* 那么这种多态是由于什么原因造成的呢?
* 是由于第一发生咯继承
* 第二:子 类重写咯父类的方法
* 第三:父类引用指向子类实例
*
*/
}
}
分割线
相关信息
以上就是我关于 Java多态及产生条件 知识点的整理与总结的全部内容,另附源码
Powered by Waline v2.15.4