在java中有类似的静态类的类吗?

静态类的定义是什么。静态类的所有方法都需要是静态的吗?

是否需要相反的方式,如果一个类包含所有的静态方法,类应该是静态的?

静态类有什么好处?

回答:

Java有静态嵌套类,但你说的是顶级的静态类。 Java没有办法使顶级类静态,但你可以模拟一个静态类,像这样:

声明你的类final - 阻止类的继承,因为继承静态类没有意义

使构造函数私有 - 阻止客户端代码实例化,因为实例化一个静态类没有意义

使类的所有成员和函数static - 由于类不能实例化,没有实例方法可以被调用或实例成员变量访问

注意编译器不会阻止你声明一个实例(非静态)成员。 只有当您尝试调用实例成员时,该问题才会显示

根据上述建议的简单示例:

public class TestMyStaticClass {

public static void main(String []args){

MyStaticClass.setMyStaticMember(5);

System.out.println("Static value: " + MyStaticClass.getMyStaticMember());

System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember());

// MyStaticClass x = new MyStaticClass(); // results in compile time error

}

}

// A top-level Java class mimicking static class behavior

public final class MyStaticClass {

private MyStaticClass () { // private constructor

myStaticMember = 1;

}

private static int myStaticMember;

public static void setMyStaticMember(int val) {

myStaticMember = val;

}

public static int getMyStaticMember() {

return myStaticMember;

}

public static int squareMyStaticMember() {

return myStaticMember * myStaticMember;

}

}

静态类有什么好处? 静态类的的一个好处是一次定义,在工具库类中,实例化是没有意义的。 一个很好的例子是Math类,它包含一些数学常数,如PI和E,并且提供简单的数学计算。 在这种情况下实例化是不必要的。 参见Java的Math类。 注意它是final,它的所有成员都是静态的。 如果Java允许顶级类声明为静态,那么Math类当然是静态的。

java定义一个静态类_Java中的静态类相关推荐

  1. java定义一个点_JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point类中要定义它的三个构造函数...

    JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point类中要定义它的三个构造函数 JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point ...

  2. java的static类_java中staticclass静态类详解

    一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static ...

  3. java 静态 非静态_Java中的静态类和非静态类

    一.静态类和非静态的定义 1.非静态 一.有名类 class Eat{//不可以直接在main方法中使用 必须创建对象 void sleep() { } } 二.匿名类 Example example ...

  4. java中定义一个时间_Java中的日期和时间

    根据个人目前正在编写的<Java核心编程-基础篇>的规划,这部分属于第15章内容,这里沿用了书中的章节编号.另外,因为原文篇幅太长,这里适当做了删减. 15.1.概述 在 Java 8 之 ...

  5. java 定义map集合_Java中的Map集合

    Map集合: 个人感觉Map接口以后会经常用到,可以很清晰地查找某个对象,要熟悉其四种遍历方法.特别注意其键值对的键不能是重复的,有想定义有序存取的话,可以使用LinkedHashMap集合.不过定义 ...

  6. java定义一个类_Java类的定义格式:Java如何定义一个类

    在面向对象的思想中,最核心的就是对象.为了在程序中创建对象,首先需要定义一个类.类是对象的抽象,它用于描述一组对象的共同特征和行为,例如人都有姓名.年龄.性别等特征,还有学习.工作.购物等行为.以面向 ...

  7. java定义一个类_java如何定义一个类,创建它的成员变量和方法?

    展开全部 类即对象的思想,一个对象包含e69da5e887aa3231313335323631343130323136353331333337623439了属于自己的成员变量和操作方法. 如何定义一个 ...

  8. java如何枚举定义一个数组_Java中如何将字符枚举类变成一个数组

    ( light. class ); currenummap.put(light. red , " 红灯 " ); currenummap.put(light. green , &q ...

  9. java 定义整数数组_JAVA中数组的正确定义方法是什么?

    数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素. §5.1一维数组 一.一维数组的定义 type arrayName[]; 其中类型(type)可以为Java中任 ...

最新文章

  1. python3生成一个定长列表_range方法在Python2和Python3中的不同
  2. idea新建maven项目没有src目录
  3. n阶换方c语言程序,求单偶阶与双偶阶幻方编程思想及其算法!
  4. AIX上报:“Shell will time out in 60 seconds” 解决办法
  5. 一文读懂云计算和PAYG“现付现用”模型
  6. mysql中文乱码解决_Stata 中文乱码顽疾解决方法
  7. gorm软删除_gorm的简单使用和注意事项
  8. Canvas的基本用法
  9. php api 在线编辑导出,api在线管理,调试,文档生成工具之Apizza
  10. 虚拟机安装苹果系统(Mac OSX 10.15包含所有资源)
  11. 【小米小爱老师4G网络尊享版使用总结】界面|设置|安装|输入_摘要频道_什么值得买...
  12. 自定义浏览器UA标识
  13. 【024】基于51单片机的电子琴加音乐播放器系统Proteus仿真设计
  14. win8用分区助手开不了机处理
  15. Hello, World——从零到实盘0
  16. 使用Visual Paradigm如何复制表格
  17. 为什么大数据工程师比Java程序员工资高50%?
  18. 简单实现一个虚拟形象系统
  19. 计算广告4——用户增长
  20. 我九点钟上计算机课用英语怎么说,9点18分的英语怎么写(9点18用英语怎么说二种)...

热门文章

  1. html 左边固定右边自动,七种实现左侧固定,右侧自适应两栏布局的方法
  2. 【JUC】第二章 线程间通信、集合的线程安全
  3. NOI2016区间bzoj4653(线段树,尺取法,区间离散化)
  4. python 日志模块 日志格式
  5. Linux 网络操作
  6. Android嵌入式安卓触摸屏|4418开发板平台
  7. Java编程思想 4th 第5章 初始化与清理
  8. zh-cn en-uk、zh-tw表示语言(文化)代码与国家地区对照表(最全的各国地区对照表)...
  9. jsp不能使用return时候,如何在出异常时退出,不在向下执行
  10. HDU 1870 愚人节的礼物 栈的应用