java语言中的多态概述
2024-10-01 11:50:19
多态:一个对象相应着不同类型
多态在代码中的体现:父类或接口的引用指向其子类对象。
多态的优点:
提高了代码的扩展性,前期定义的代码能够使用后期的内容。
多态的弊端:
前期定义的内容不能使用后期子类中定义的特有内容。
多态的前提:
1,必须有关系,(继承。实现)。
2,要有覆盖。
Animal a =new Cat();
自己主动类型提升,猫对象提升了动物类型。可是特有功能无法訪问。能够限制对特有功能的訪问。
专业讲:向上转型。将子类型隐藏。就不能使用子类的特有方法。
假设还想用详细动物猫的特有功能,能够将该对象进行向下转型。目的是为了使用子类中的特有方法。
Cat c = (Cat) a;
注意:对于转型,自始至终都是子类对象在做着类型的变化。
if (a instanceof Cat){
Cat c=(Cat) a;
}
instanceof:用于推断对象的详细类型(类或是接口)。仅仅能用于引用数据类型推断。
通常在向下转型前用于健壮性的推断。
多态时,成员的特点:
1。成员变量
编译时:參考引用型变量所述的类中是否有调用的成员变量,有,编译通过,没有编译失败。
执行时:參考引用型变量所述的类中是否有调用的成员变量,并执行该所属类中的成员变量。
简单说:编译和执行都參考等号左边。
2,成员函数(重点)非静态
编译时:參考引用型变量所述的类中是否有调用的成员函数,有,编译通过,没有编译失败。
执行时:參考的是对象所述的类中是否有调用的函数。动态绑定
简单说:编译看左边,执行看右边。
样例:
class Outer
{
void method(){
Object obj =new Object(){
public void show(){
System.out.println("show run");
}
};
obj.show();//错误提示,找不到符号
//由于匿名内部类这个子类对象被向上转型成了Object类型。这样就不能再使用子类的特有方法了
}
}
class InnerClass
{
public static void main(String [] args)
{
new Outer().method();
}
}
3,静态函数
编译时:參考引用型变量所述的类中是否有调用的静态方法,有,编译通过。没有编译失败。
执行时:參考引用型变量所述的类中是否有调用的静态方法。
简单说:编译和执行都看左边。
事实上对于静态方法,是不须要对象的。直接用类名调用就可以。
最新文章
- ca 自签名证书 并实现HAProxy https功能
- jqGrid subGrid配置 如何首次加载动态展开所有的子表格
- 反汇编一个dos软盘的启动扇区
- 如何生成excel文件作为图像识别结果
- gridview自定义表头
- ASP.NET页面生命周期总结(2)
- iOS图片拉伸技巧-李明杰分享
- Initialising Memories
- Jquery EasyUI tabs处理
- oracle xe 数据库用户操作
- 在Simplicity Studio下创建适用于EFR32的工程项目
- Android or Java的回调粗俗理解 这才是最通俗易懂的
- Linux学习之路2-linux系统烧写
- 【XSY3320】string AC自动机 哈希 点分治
- Imcash平台测评报告
- C++ LocalAlloc() &; LocalSize() &; LocalFree ()
- Linux下批量杀掉筛选进程
- C++ 常用算法
- 4:JavaScript中的对象
- hdu 5018
热门文章
- [GraphQL] Mutations and Input Types
- android setCookie 免登录
- hive 配置注意事项及初始化hive 元数据
- 数据结构 - 归并排序(merging sort) 具体解释 及 代码
- vi 调到第一行,或最后一行
- CodeForcess--609B--The Best Gift(模拟水题)
- pyCrypto python 3.5--转
- Exception异常常见属性
- SQL Server数据库性能优化
- Centos7 minimal 系列之rabbitmq的理解(九)