zoukankan      html  css  js  c++  java
  • 面试题:Java静态/非静态方法重写

    1.非静态方法重写

    public class Test {
        public static void main(String[] args) throws Exception {
            Tree pine = new Pine();
            Tree oak = new Oak();
            say(pine);
            say(oak);
        }
        private static void say(Tree tr) {
            tr.say();
        }
    }
    
    class Tree {
        public void say() {
            System.out.println("Tree");
        }
    }
    class Pine extends Tree {
        public void say() {
            System.out.println("Pine");
        }
    }
    class Oak extends Tree {
        public void say() {
            System.out.println("Oak");
        }
    }

    程序执行后输出:
    Pine
    Oak

    2.静态方法重写

    class Tree {
        public static void say() {
            System.out.println("Tree");
        }
    }
    class Pine extends Tree {
        public static void say() {
            System.out.println("Pine");
        }
    }
    class Oak extends Tree {
        public static void say() {
            System.out.println("Oak");
        }
    }

    程序执行后输出:
    Tree
    Tree

    3.原因分析

    静态方法是属于类的,理论上可以重写,但其不具有多态性。因为多态性指在运行时确定类型,静态方法却是在编译时就确定类型的。

    多态性只与实例、非静态方法相关。

  • 相关阅读:
    引领5G行业化,广和通荣获“IoT创新大奖”
    Win知识
    物联网通信方式
    萌新配置rip动态路由实验
    FPGA设计经验总结
    UWB定位技术
    REST简介
    linux性能调优总结
    Nginx安装及启动
    leetcode 精选top面试题
  • 原文地址:https://www.cnblogs.com/luo630/p/4495304.html
Copyright © 2011-2022 走看看