java 静态类 创建_Java 中的静态类
Java 语言中可以定义一个静态类吗?
答案是显而易见的:YES ,Java 语言存在静态类。
我们都知道,Java 语言中存在 静态变量 、存在 静态方法 、也存在 静态块。其实,Java 语言还存在 静态类。
Java 语言中的静态类
Java 语言允许我们在一个类中定义另一个类。类中的类我们称之为嵌套类。而包含嵌套类的类,我们则称之为 外部类。
Java 语言中,我们不能定义顶级的外部静态类。但我们可以定义静态的内部嵌套类。
也就是说,我们不能定义下面这中形式的静态类
public static class JavaTester
{
}
当我们可以在类中定义一个静态的嵌套类,比如
public class JavaTester
{
static class NestedStaticClass
{
}
}
那么,你会不会有另一个疑问:静态和非静态的嵌套类有什么区别呢 ?
对了,忘记说了,非静态嵌套类也被称为内部类
静态和非静态的嵌套类的区别
静态嵌套类和非静态嵌套类的区别好多条,我们陈述下几个主要的区别:
静态嵌套类使用时并不需要引用外部类。但非静态嵌套类 (内部类) 则必须引用外部类。
非静态嵌套类(内部类) 可以访问外部类的静态和非静态成员。但静态嵌套类只能访问到外部类的静态成员,不可以访问外部类的非静态成员(实例成员)。
非静态嵌套类(内部类) 不能单独实例化。必须先实例化外部类,才能实例化内部类。内部类可以引用外部类的数据和方法。因此,我们并不需要将外部类的引用传递给内部类的构造方法。这种机制,使得内部类更加简单明了。
范例
我们写一个范例来演示下静态嵌套类和非静态嵌套类的区别
public class JavaTester
{
private static String msg = "简单教程,简单编程";
// 静态嵌套类
public static class NestedStaticClass{
// 静态嵌套类只能访问外部类的静态成员
public void printMessage()
{
// 如果将 msg 变量设为静态的,则下面的语句会报错
System.out.println("Message from nested static class: " + msg);
}
}
// 非静态嵌套类,也称之为内部类
public class InnerClass{
// 嵌套类可以访问外部类的静态和非静态成员
public void display(){
System.out.println("Message from non-static nested class: "+ msg);
}
}
// 如何创建静态嵌套类和内部类的实例?
public static void main(String args[]){
// 创建一个静态嵌套类的实例
JavaTester.NestedStaticClass printer = new JavaTester.NestedStaticClass();
// 调用静态嵌套类的成员方法
printer.printMessage();
// 为了创建一个内部类的实例,我们必须先创建一个外部类的实例
// 然后再创建内部类的时候
JavaTester outer = new JavaTester();
JavaTester.InnerClass inner = outer.new InnerClass();
// 调用内部类的非静态成员
inner.display();
// 我们可以将上面的两步合并为一步
JavaTester.InnerClass innerObject = new JavaTester().new InnerClass();
// 现在,我们可以调用内部类的方法
innerObject.display();
}
}
编译运行以上代码,输出结果如下
[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester
Message from nested static class: 简单教程,简单编程
Message from non-static nested class: 简单教程,简单编程
Message from non-static nested class: 简单教程,简单编程
java 静态类 创建_Java 中的静态类相关推荐
- java method 创建_java中创建对象的5种方式
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法. Java中有5种创建对象的方法,下面列出例子还有他们的字节码: 使用n ...
- java的static类_java中staticclass静态类详解
一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static ...
- java定义一个静态类_Java中的静态类
在java中有类似的静态类的类吗? 静态类的定义是什么.静态类的所有方法都需要是静态的吗? 是否需要相反的方式,如果一个类包含所有的静态方法,类应该是静态的? 静态类有什么好处? 回答: Java有静 ...
- java http连接_Java中通过方法创建一个http连接并请求(服务器间进行通信)
服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...
- java 主线程_Java中的主线程 - Break易站
Java 多线程 Java为多线程编程提供内置支持.多线程程序包含两个或多个可以并发运行的部分.这样的程序的每个部分称为线程,每个线程定义一个单独的执行路径. Java中的主线程 当Java程序启动时 ...
- Java jni 底层_Java中的native是如何实现的(JNI)
什么是JNI JNI是Java Native Interface的缩写,Java本地接口(JNI)提供了将Java与C/C++.汇编等本地代码集成的方案,该规范使得在 Java 虚拟机内运行的 Jav ...
- java 序列化实例_Java中的序列化与反序列化实例
创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...
- java thread join()_Java中Thread.join()的使用方法
概要 本文分三个部分对thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...
- java file 方法_JAVA中File的常用方法
一.File类中包含了很多获得文件或文件夹属性的方法,使用起来比较方便,下面将常见的方法介绍如下: a.createNewFile方法 public boolean createNewFile() t ...
最新文章
- Django 缓存6.2
- 生产场景 bond 0实战
- 【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )
- 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)
- 043、JVM实战总结:动手实验,自己动手模拟出频繁Young GC的场景
- Babel 陷财务困境,负责人13万年薪遭质疑,Vue.js作者尤雨溪发文力挺
- Python排序算法[二]:测试数据的迷雾散去
- 数学公式的规约(reduce)和简化(simplify)
- 数组题 倒置 加到字符串
- python写图片爬取软件_python抓取整个网站图片
- 2018年深圳,武汉房价走势分析
- Adobe reader xi打开几秒后闪退问题
- 微信支付 postman_支付宝微信刷脸支付系统搭建服务商平台怎么做
- centos linux怎么关闭锁屏时间,【Centos】Centos7.5取消自动锁屏功能
- 方差分析及其在Excel、SPSS中的应用
- excel查重技巧:如何用组合函数快速统计重复数据(下)
- 数据结构考研:电脑磁盘碎片的定义、产生原理和清理原因(文件碎片/机械硬盘/固态硬盘/硬盘清理/计算机/软件工程/王道论坛)
- 利用python在网上接单赚钱,兼职也能月入过万,赶紧学起来!
- Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐
- 作业盒子端AndrOid,作业盒子小学老师端
热门文章
- 寄存器对某位 置1时。为什么不直接置1而要先写0在置1?
- minecraft 服务器修改器,【1.6.2】Minecraft內置修改器TMI(包含整合包)
- FindWindowEx死循环的问题
- 架构师图谱·微服务消息队列篇
- 程序包lombok不存在
- 【自研工具】漏洞盒子批量提交脚本
- 2022新版Git教程 从入门到实战(三)Git分支管理
- java之随机抽取数字并按从小到大排序
- 视频教程-Layabox3D游戏视频教程-源码-手游开发
- java设置项目为library_如何从Eclipse设置java.library.path