多态:
我们知道Java的三大特性:封装、继承、多态。前两个之前在Java入门(六)已经讲到,现在来讲多态这个特性。
什么是多态?
多态顾名思义即为多种形态的意思
Java中多态的含义:
发送消息给某个对象,让这个对象自行决定采用哪种行为响应这个消息
子类对象的引用赋值给父类引用变量来实现动态的方法调用
Java中形成多态的前提:
继承
父类方法的重写
向上转型
我对多态的解释:
比如我们,是人,也是学生,也是年轻人,我可以用人的身份去做事情,也可以用学生的身份去学生票,也可以用年轻人的身份做公益,这样我们可以通过不同的形态去做不同的事情。这样是不是更好理解一点?
注意:
多态前提条件:必须有子父类关系。
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
多态的定义与使用格式:
父类类型 变量名=new 子类类型();
多态中成员的特点:
多态成员变量:编译运行看左边
多态成员方法:编译看左边,运行看右边
多态的转型:
多态的转型分为向上转型和向下转型两种
向上转型:多态本身就是向上转型过的过程
使用格式:父类类型 变量名=new 子类类型();
适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。
向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型
使用格式:子类类型 变量名=(子类类型) 父类类型的变量;
适用场景:当要使用子类特有功能时。
代码解释:
public class Person { //人类,作为父类使用
public void speak(){
System.out.println("我们都是一个人");
}
}
public class Student extends Person{ //继承父类,相当于我们是学生,有人的方法
@Override
public void speak(){
System.out.println("我是人类中的学生");
}
}
public class Child extends Person{ //继承父类,相当于我们是孩子,有孩子的行为
@Override
public void speak(){
System.out.println("我是人类中的孩子");
}
}
//测试类
public class TestMain {
public static void main(String[] args) {
//父类类型 变量名=new 子类类型();
Person p = new Student(); //子类对象的引用赋值给父类
p.speak(); //多态 相当于这里使用的是Student的方法。输出我是人类中的学生
//我作为人,我用学生的身份,说出:我是人类中的学生
Person p = new Child();
相关标签: IT认证培训 沈阳IT认证培训
免费提供问答解答,帮您轻松解决难题
申请免费试听
只要一个电话
我们为您免费回电