JAVA多态与类型转化分析-------》域没有多态性
2021/4/10 1:27:30
本文主要是介绍JAVA多态与类型转化分析-------》域没有多态性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、多态性:
超类(即基类或父类)引用在运行时既能代表超类本身的对象,
也能代表其子类(即派生类)的对象的能力。
类的一个成员若想表现多态必须可以被覆盖:
对于成员变量而言,不会发生覆盖现象(会隐藏),在子类出现相同变量的定义时只会隐藏父类变量,
因此不会表现多态。同时变量调用在编译时就会解析,不符合动态绑定的特征;
在成员方法中,静态方法和final方法,private方法 也不会发生覆盖现象(会隐藏),因此也不会表现多态性。
因此只有除静态方法和final,private 方法以外的方法才会表现多态性
二、向上类型转化时:
丢失添加的方法和字段,剩余的为:
基类字段
基类静态方法或final方法 //前二者为不能被覆盖的成员,因此保留,无多态性
基类其他方法(若被子类覆盖则为子类覆盖的新方法)
下边看一个例子:
/**
* 父类
* @author LIMING
*/
public class fa {
public int filed = 0;
public int getFiled() {
return filed;
}
public int getfaFiled() {
return 99;
}
}
/**
* 子类
* @author LIMING
*/
public class son extends fa {
public int filed = 1;
public int sonfiled = 22;
//覆盖父类方法
public int getFiled() {
return filed;
}
public int getsonFiled() {
return 88;
}
public static void main(String[] args) {
fa fa = new son();//上溯造型
System.out.println(fa.filed);//调用父类的字段 输出结果为父类的内容 不是子类的
System.out.println(fa.getFiled());//调用父类的方法 但是子类有覆盖 所以这里的输出是1 也就是动态 调用的是子类的方法
System.out.println(fa.getfaFiled());//这个是调用的父类的方法 子类没有覆盖
//上溯之后子类的方法会丢失 所以不能调用子类的方法
}
}
//共勉!
这篇关于JAVA多态与类型转化分析-------》域没有多态性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?
- 2024-12-23汽车4S店运营效率提升的核心工具