Java 静态类 static

静态的方法是非虚方法(Java中的非虚方法有private,final,static,构造器,非虚方法无需根据具体的对象遍历方法区的方法表,决定调用关系)

也就是说,对于静态类型方法的调用,是其声明类型的,如Parent c = new Child(); Parent便是其外观类型(声明类型),故调用的便是Parent类型的静态方法

复制代码
复制代码
package com.company;

public class Main {
    public static void main(String[] args) {
        Parent c = new Child();
        c.display();
    }
}

class Parent {
    public static void display() {
        System.out.println("Parent->display");
    }
}

class Child extends Parent {
    public static void display() {
        System.out.println("Child->display");
    }
}
复制代码
复制代码

结果:

Parent->display

 

复制代码
复制代码
package com.company;

public class Main {
    public static void main(String[] args) {
        Parent c = new Child();
        c.display();
    }
}

class Parent {
    public void display() {
        System.out.println("Parent->display");
    }
}

class Child extends Parent {
    public void display() {
        System.out.println("Child->display");
    }
}
复制代码
复制代码

结果:

Child->display

 ==================================================================================

 

复制代码
package com.company;


public class Main {

    static{
        System.out.println("test static 1");
    }
    
    public static void main(String[] args) {

    }

    static{
        System.out.println("test static 2");
    }

}
复制代码

结果:

test static 1
test static 2

虽然在main方法中没有任何语句,但是还是会输出。另外,static块可以出现类中的任何地方(只要不是方法内部,记住,任何方法内部都不行),并且执行是按照static块的顺序执行的。

 

http://www.cnblogs.com/dolphin0520/p/3799052.html

posted @   hongdada  阅读(680)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示