继承--多态
【摘要】
继承--多态
一、多态特征
1、编译时的类型由申明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象类型决定。
2、如果编译类型和运行类型不同,就出现了多态。
3、多态例子:Person p = new Student();
二、实现多态...
继承--多态
一、多态特征
1、编译时的类型由申明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象类型决定。
2、如果编译类型和运行类型不同,就出现了多态。
3、多态例子:Person p = new Student();
二、实现多态条件
继承是多态实现的前提条件
父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法
三、多态作用
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
四、引用类型转换
向上转型(子类→父类):(自动完成)
父类名称 父类对象 = 子类实例 ;
向下转型(父类→子类):(强制完成)
子类名称 子类对象 = (子类名称)父类实例 ;
五、注意事项
1、在多态环境中,编译类型的变量不能调用实际类型的类里的方法,只能调用编译型的类里的方法。
-
Car c = new HM();//多态
-
//c.hmXUANFU();//调用不到,c调用不到c实际类型里的方法
2、在多态环境中,若调用的方法是子类覆写过来的,那么父类变量调用的时候,实际调用是子类覆写的方法。
-
Car c = new HM();//多态
-
-
/*
-
若多态调用的方法是子类覆写过来的,
-
那么父类变量调用的时候,实际上调用的是 子类的方法;
-
*/
-
c.show();//show到底是谁的?
六、多态实例
-
class Car
-
{
-
public void show()
-
{
-
System.out.println("我是一般的车");
-
}
-
}
-
-
class HM extends Car
-
{
-
//覆写
-
public void show()
-
{
-
System.out.println("我是悍马车");
-
}
-
-
public void hmXUANFU()
-
{
-
System.out.println("我在炫富");
-
}
-
-
}
-
-
class Demo
-
{
-
public static void main(String[] args)
-
{
-
-
Car c = new HM();//多态
-
-
/*
-
若多态调用的方法是子类覆写过来的,
-
那么父类变量调用的时候,实际上调用的是 子类的方法;
-
*/
-
c.show();//show到底是谁的?
-
-
-
//c.hmXUANFU();//调用不到,c调用不到c实际类型里的方法
-
-
-
if(c instanceof HM)//检验是不是悍马
-
{
-
HM h =(HM)c;
-
h.hmXUANFU();
-
}
-
-
-
-
-
}
-
}
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/79397104
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)