初识Java—(二十四)Java类成员_java 类

createh54个月前 (02-18)技术教程88

static关键字修饰的成员就是类成员,其中有类变量Field、类方法、静态初始化块。static修饰的类成员属于整个类,不属于单个实例。

6.3.1 理解类成员

在Java类里只能包含Field、方法、构造器、初始化块、内部类(接口、枚举)5种成员,其中static可以修饰Field、方法、初始化块、内部类。用static修饰的成员就是类成员。类成员属于整个类,而不是属于单个对象。

类Field既可以通过类来访问,也可以通过类的对象来访问。但是通过类的对象来访问类Field时,实际上访问的并不是该对象所拥有的Field,而是类所拥有的Field。可以理解为:当通过对象来访问类Field时,系统会在底层转换为通过该类来访问类Field。

举例1:

public class Test {
public static int a = 1;
public void run(){
a++;
System.out.println(a);
}
public static void main(String[] args) {
Test t1 = new Test();
t1.run(); //
Test t2 = new Test();
t2.run(); //
}
}

类方法也是类成员的一种,类方法属于类的,通常直接使用类作为调用者来调用类方法,但是可以使用对象来调用类方法,与类Field类似。

静态初始化块也是类成员的一种,静态初始化块用于执行类的初始化动作,在类的初始化阶段,系统会调用该类的静态初始化块来对类进行初始化。一旦该类初始化结束后,静态初始化块将永远不会获得执行的机会。

对于static关键字而言,有一条非常重要的规则:类成员不能访问实例成员。因为类成员是属于类的,类成员的作用域比实例成员更大,完全可能出现类成员已经初始化完成,但实例成员还不曾初始化的情况。如果允许类成员访问实例成员将会引发大量的错误。

6.3.2 单例类

在Java中,类的构造器默认为public的权限,允许任何类自由的创建该类的对象。但是在某些情况下一些类自由的创建该类的实例对象没有任何意义,比如说:一个系统的窗口管理器、一个数据库引擎访问点,此时如果在系统中为这些类创建多个对象就没有太大的实际意义。

所以在这种情况下,可以设计一个类只能创建一个实例,则这个类被称为单例类。

创建单例类的步骤:

1、 使用private关键字修饰构造器

2、 提供一个public的static的类方法调用构造器

3、 创建一个static的成员变量来保存类对象,同时判断对象是否已经创建

举例1:

package com.langsin.test;
public class Singleton {
private Singleton(){
}
private static Singleton single = null;
public static Singleton getInstance(){
if(single==null){
single = new Singleton();
}
return single;
}
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);
}
}

相关文章

java中类变量和实例变量的实质区别?

类变量和实例变量的区别相对于static(静态的)或说类的, 本章开始提到的都是instance(实例的)或说对象的。 每个对象都有自己的一份儿对象域或实例域,相互之间没关系, 不共享。 我们可以从对...

Java变量、常量、运算符、数组_java常量与变量例子

变量(Variables)在 Java 中,变量用于存储程序运行时所需的数据(The data required during the runtime)。变量的声明(The declaration o...

Java变量_java变量名命名规则

变量如果按照大部分的书上来说,在程序运行过程中可以改变的量称之为变量。常量就是程序运行中不可改变的量就是常量。变量准确的来说就是存储的名称,如果你要把数据存到内存里,你就需要选择一个数据类型,而且还要...

Java代码保护方法之一:ProGuard_java如何保护源码

ProGuard是一个开源的Java程序代码压缩、优化和混淆工具,是目前Java代码保护最常用的工具。“瘦身高手”+“优化小能手”+“混乱大师”。1、压缩(瘦身高手):检查并删除没有被使用的类、字段、...

Java关键字有哪些?_java关键字有哪些及其作用

Abstract 抽象的一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现break一...

Java反射机制最全详解(图文全面总结)

Java反射是各种框架以及中间件实现的基石,也是大厂面试重点考察内容,下面全面来详解Java反射机制@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。Java反...