返回顶部
首页 > 资讯 > 精选 >java中staticclass静态类的实例介绍
  • 450
分享到

java中staticclass静态类的实例介绍

java 2023-05-30 19:05:38 450人浏览 独家记忆
摘要

这篇文章主要讲解了“java中staticclass静态类的实例介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中staticclass静态类的实例介绍”吧!一般情况下是不可以用s

这篇文章主要讲解了“java中staticclass静态类的实例介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中staticclass静态类的实例介绍”吧!

一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。

在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。

开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用。

一、静态内部类的使用目的。

在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为了静态内部类。不过由于种种的原因,如使用上的限制等等因素(具体的使用限制,笔者在下面的内容中会详细阐述),在实际工作中用的并不是很多。但是并不是说其没有价值。在某些特殊的情况下,少了这个静态内部类还真是不行。如在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程序的入口,必须具有),那么会出现很多额外的代码。而且最主要的时这段主程序的代码对于Java文件来说,只是一个形式,其本身并不需要这种主方法。但是少了这个主方法又是万万不行的。在这种情况下,就可以将主方法写入到静态内部类中,从而不用为每个Java源文件都设置一个类似的主方法。这对于代码测试是非常有用的。在一些中大型的应用程序开发中,则是一个常用的技术手段。为此,这个静态内部类虽然不怎么常用,但是程序开发人员还必须要掌握它。也许在某个关键的时刻,其还可以发挥巨大的作用也说不定。

public class MainInStaticClass {static class Main{static void main() {//将主方法写到静态内部类中,从而不必为每个源文件都这种一个类似的主方法new MainInStaticClass().print();}}public static void main(String[] args){new MainInStaticClass().print();}public void print(){System.out.println("main in static inner class");}}public class TestMain {public static void main(String[] args) {// TODO Auto-generated method stub// new MainInStaticClass().print();MainInStaticClass.Main.main();new MainInStaticClass.Main();}}

二、静态内部类的使用限制。

将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致。不过其细节方面仍然有很大的不同。具体来说,主要有如下几个地方要引起各位程序开发人员的注意。

一是静态成员(包括静态变量与静态成员)的定义。一般情况下,如果一个内部类不是被定义成静态内部类,那么在定义成员变量或者成员方法的时候,是不能够被定义成静态成员变量与静态成员方法的。也就是说,在非静态内部类中不可以声明静态成员。如现在在一个student类中定义了一个内部类age,如果没有将这个类利用static关键字修饰,即没有定义为静态类,那么在这个内部类中如果要利用static关键字来修饰某个成员方法或者成员变量是不允许的。在编译的时候就通不过。故程序开发人员需要注意,只有将某个内部类修饰为静态类,然后才能够在这个类中定义静态的成员变量与成员方法。这是静态内部类都有的一个特性。也正是因为这个原因,有时候少了这个静态的内部类,很多工作就无法完成。或者说要绕一个大圈才能够实现某个用户的需求。这也是静态的内部类之所以要存在的一个重要原因。

二是在成员的引用上,有比较大的限制。一般的非静态内部类,可以随意的访问外部类中的成员变量与成员方法。即使这些成员方法被修饰为private(私有的成员变量或者方法),其非静态内部类都可以随意的访问。则是非静态内部类的特权。因为在其他类中是无法访问被定义为私有的成员变量或则方法。但是如果一个内部类被定义为静态的,那么在银用外部类的成员方法或则成员变量的时候,就会有诸多的限制。如不能够从静态内部类的对象中访问外部类的非静态成员(包括成员变量与成员方法)。这是什么意思呢?如果在外部类中定义了两个变量,一个是非静态的变量,一个是静态的变量。那么在静态内部类中,无论在成员方法内部还是在其他地方,都只能够引用外部类中的静态的变量,而不能够访问非静态的变量。在静态内部类中,可以定义静态的方法(也只有在静态的内部类中可以定义静态的方法),在静态方法中引用外部类的成员。但是无论在内部类的什么地方引用,有一个共同点,即都只能够引用外部类中的静态成员方法或者成员变量。对于那些非静态的成员变量与成员方法,在静态内部类中是无法访问的。这就是静态内部类的最大使用限制。在普通的非静态内部类中是没有这个限制的。也正是这个原因,决定了静态内部类只应用在一些特定的场合。其应用范围远远没有像非静态的内部类那样广泛。

三是在创建静态内部类时不需要将静态内部类的实例绑定在外部类的实例上。

通常情况下,在一个类中创建成员内部类的时候,有一个强制性的规定,即内部类的实例一定要绑定在外部类的实例中。也就是说,在创建内部类之前要先在外部类中要利用new关键字来创建这个内部类的对象。如此的话如果从外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。也就是说,普通非静态内部类的对象是依附在外部类对象之中的。但是,如果成员开发人员创建的时静态内部类,那么这就又另当别论了。通常情况下,程序员在定义静态内部类的时候,是不需要定义绑定在外部类的实例上的。也就是说,要在一个外部类中定义一个静态的内部类,不需要利用关键字new来创建内部类的实例。即在创建静态类内部对象时,不需要其外部类的对象。

newMainInStaticClass.Main();

具体为什么会这样,一般程序开发人员不需要了解这么深入,只需要记住有这个规则即可。在定义静态内部类的时候,千万不要犯画蛇添足的错误。

从以上的分析中可以看出,静态内部类与非静态的内部类还是有很大的不同的。一般程序开发人员可以这么理解,非静态的内部类对象隐式地在外部类中保存了一个引用,指向创建它的外部类对象。不管这么理解,程序开发人员都需要牢记静态内部类与非静态内部类的差异。如是否可以创建静态的成员方法与成员变量(静态内部类可以创建静态的成员而非静态的内部类不可以)、对于访问外部类的成员的限制(静态内部类只可以访问外部类中的静态成员变量与成员方法而非静态的内部类即可以访问静态的也可以访问非静态的外部类成员方法与成员变量)。这两个差异是静态内部类与非静态外部类最大的差异,也是静态内部类之所以存在的原因。了解了这个差异之后,程序开发人员还需要知道,在什么情况下该使用静态内部类。如在程序测试的时候,为了避免在各个Java源文件中书写主方法的代码,可以将主方法写入到静态内部类中,以减少代码的书写量,让代码更加的简洁。

总之,静态内部类在Java语言中是一个很特殊的类,跟普通的静态类以及非静态的内部类都有很大的差异。作为程序开发人员,必须要知道他们之间的差异,并在实际工作中在合适的地方采用合适的类。不过总的来说,静态内部类的使用频率并不是很高。但是在有一些场合,如果没有这个内部静态类的话,可能会起到事倍功半的反面效果

三、实例化

看了以上内容后,下面我整体测试了一下:

首先大家需要明白,静态内部类只是不依附与外部类,它里面的变量和方法也没有说一定得是静态的,下面拿代码说事:

public class Test {public static void main(String[] args){MyInnerStaticClass inner=new MyInnerStaticClass();inner.a=10;inner.b="abc";System.out.println(inner.a+" "+inner.b);}static class MyInnerStaticClass{int a;String b;}}
public class Test {public static void main(String[] args){MyInnerStaticClass inner=new MyInnerStaticClass();inner.a=10;inner.b="abc";System.out.println(inner.a+" "+inner.b);}static class MyInnerStaticClass{int a;String b;}}

上述代码将静态匿名类用new实例化了,运行后输入10 abc,正确!

感谢各位的阅读,以上就是“java中staticclass静态类的实例介绍”的内容了,经过本文的学习后,相信大家对java中staticclass静态类的实例介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: java中staticclass静态类的实例介绍

本文链接: https://lsjlt.com/news/220480.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java中staticclass静态类的实例介绍
    这篇文章主要讲解了“java中staticclass静态类的实例介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中staticclass静态类的实例介绍”吧!一般情况下是不可以用s...
    99+
    2023-05-30
    java
  • ASP.NETCore中的静态文件介绍
    静态文件(HTML,CSS,图片和Javascript之类的资源)会被ASP.NET Core应用直接提供给客户端。 静态文件通常位于网站根目录(web root) <cont...
    99+
    2024-04-02
  • C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍
    一、概述 1、WebRequest: 对统一资源标识符 (URI) 发出请求。 这是一个 abstract 类。WebRequest的派生类:PackWebRequest、FileW...
    99+
    2024-04-02
  • Java变量类型实例介绍
    这篇文章主要介绍“Java变量类型实例介绍”,在日常操作中,相信很多人在Java变量类型实例介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java变量类型实例介绍”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-02
  • Python实例方法与类方法和静态方法介绍与区别分析
    目录1.实例方法2.类方法3.静态方法4.实例方法与类方法和静态方法的区别1.实例方法 Python 的实例方法用得最多,也最常见。我们先来看 Python 的实例方法。 class...
    99+
    2024-04-02
  • 页面静态化技术Freemarker技术的介绍及使用实例.
    一、FreeMarker简介  1、动态网页和静态网页差异   在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效...
    99+
    2024-04-02
  • es6中class类静态方法,静态属性,实例属性,实例方法的示例分析
    这篇文章主要为大家展示了“es6中class类静态方法,静态属性,实例属性,实例方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“es6中class类...
    99+
    2024-04-02
  • java中的几种类介绍
    Date类(1)Date类的概述:表示特定的瞬间表示到毫秒(2)构造方法主要有两种:public Date() public Date(long date) //把一个long类型的毫秒值转换成一个日期对象(3)成员方法:public l...
    99+
    2014-11-24
    java 介绍
  • java浮点类型案例介绍
      java浮点类型介绍在学习java开发中,那么java浮点类型是我们必不可少学习的知识点,下面介绍一下java浮点类型。1. float型常量:453.5439f,21379.987F,231.0f(小数表示法),2...
    99+
    2023-06-03
  • Java RMI介绍(附实例)
    Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。(推...
    99+
    2018-06-08
    Java
  • java泛型类型的调用和实例化介绍
    本篇内容主要讲解“java泛型类型的调用和实例化介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java泛型类型的调用和实例化介绍”吧!1、泛型调用类似于普通方法调用,但你不是把参数传递给方法...
    99+
    2023-06-20
  • Java中的静态内部类详解及代码示例
    1. 什么是静态内部类在Java中有静态代码块、静态变量、静态方法,当然也有静态类,但Java中的静态类只能是Java的内部类,也称为静态嵌套类。静态内部类的定义如下:public class OuterClass { static cl...
    99+
    2023-05-30
    java 静态内部类 ava
  • java静态内部类单例模式如何实现
    在Java中,静态内部类的单例模式可以通过以下步骤实现: 创建一个私有的静态内部类,命名为SingletonHolder,并在该类...
    99+
    2023-10-24
    java
  • Java中静态内部类怎么利用单例模式实现
    本篇文章为大家展示了Java中静态内部类怎么利用单例模式实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Singleton是众多设计模式中最容易理解的一种,也是众多设计模式中较为重要的一种设计模式...
    99+
    2023-05-31
    java ava
  • Java NIO开发的实例介绍
    本篇内容介绍了“Java NIO开发的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先来看下传统的阻塞型网络I/O的不足Java ...
    99+
    2023-06-17
  • javascript类静态方法实例分析
    本文小编为大家详细介绍“javascript类静态方法实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript类静态方法实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • java静态内部类实现单例的好处有哪些
    Java静态内部类实现单例的好处包括:1. 懒加载:静态内部类只有在使用时才会被加载,因此能够实现延迟加载的效果。这种方式不会在单例...
    99+
    2023-10-12
    java
  • java中List接口与实现类介绍
    目录List接口介绍—ArrayListArrayList源码结论ArrayList源码分析总结List接口介绍—ArrayList 有序、可重复 线程不安全,因为没有synchro...
    99+
    2024-04-02
  • PostgreSQL中的范围类型特性实例介绍
    这篇文章主要讲解了“PostgreSQL中的范围类型特性实例介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL中的范围类型特性实例介绍”...
    99+
    2024-04-02
  • java静态类中缓存数据怎么实现
    在Java中,可以使用静态变量来实现数据的缓存。静态变量是与类关联的变量,它们在整个应用程序的生命周期内都保持不变,并且可以被所有类...
    99+
    2023-10-27
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作