java静态方法不能实现多态性
来源:互联网 发布:淘宝装修收费 编辑:程序博客网 时间:2024/06/01 10:40
实验代码
public class Cycle{//向上转型
static void ride(){
System.out.println("Cycle has ride");}
public static void main(String[] args){
Cycle c = new Unicycle();
Cycle y = new Bicycle();
Cycle l = new Tricycle();
Cycle cycle = new Cycle();
c.ride();
y.ride();
l.ride();
cycle.ride();
}
}
class Unicycle extends Cycle{
static void ride(){
System.out.println("Unicycle has ride");}
}
class Bicycle extends Cycle{
static void ride(){
System.out.println("Bicycle has ride");}
}
class Tricycle extends Cycle{
static void ride(){
System.out.println("Tricycle has ride");}
}
运行结果
所有结果都是调用的父类Cycle中的方法
若把所有类中的ride方法改为非静态的
运行结果为
造成这种情况的原因是
static方法在JVM类加载时便存在,先与对象存在于内存中
当子类对象创建时会先创建父类对象(而此时父类中的ride()方法已经存在了)
这时接着创建Child对象前,(ride()方法已存在)
所以调用时调用的是父类中的ride()方法
- java静态方法不能实现多态性
- Java静态方法的多态性
- Java中静态方法不具有多态性
- Java静态方法不具有多态性详解
- Java中的静态方法具有多态性吗?
- java运行时多态性的实现方法
- Java:Java静态多态性与动态多态性
- [java]静态方法不能调用静态变量
- Java静态方法为什么不能访问非静态方法
- Java静态方法为什么不能访问非静态方法
- Java静态方法为什么不能访问非静态方法
- Java中为什么静态方法不能访问非静态方法
- Java静态方法为什么不能访问非静态方法
- Java静态方法为什么不能访问非静态方法
- java静态方法不能调用非静态方法的原因
- java实现多态性一
- java实现多态性二
- Java多态性实现机制
- Sql Server:创建用户并指定该用户只能看指定的视图,除此之外的都不让查看。
- 对比 未用指针的标准程序+幸运的编号
- sql内连接,等值连接,左连接和右连接的使用技巧(inner join and left join and right join)
- 关于xcode9中上架APP是会出现的问题
- 【头条】红火台是谁? 用友产业互联网布局再下一城
- java静态方法不能实现多态性
- 如何使用Git上传项目代码到github
- 遇到的vue栈点
- shiro权限管理入门
- 两分钟解决IntelliJ IDEA中文乱码问题
- 移动端下载文件(mui框架)
- Android service组件相关
- 【干货】Gerrit代码Review入门实战
- 参考多家,终于写出自认为比较好的数值型TextBox