第5节 可见性修饰符
6.5 可见性修饰符
没用访问修饰符的数据和方法可以被同一个包中的任何类访问
public
用它定义的类、方法和数据,所有程序都可以访问
private
用它定义的方法或数据,只能由定义该方法和数据的类访问,其他类不能访问
访问器方法
针对类中的每一个属性可以设置访问器方法
读取方法(getter)
设置方法(setter)
通常把属性用private修饰,并设置相应的访问器方法
示例:使用private修饰符和访问器方法
在这个例子中, 半径设成私有数据,用访问器方法getRadius和setRadius来读取和修改半径

实例变量和实例方法
实例变量
类中的非静态域称为实例变量,实例变量属于特定的实例,实例变量只能通过实例来访问
实例方法
类中的非静态方法称为实例方法,实例方法属于特定的实例,实例方法只能通过实例来访问
实例方法可以如下方式调用
对象名.方法名( );
类变量和类方法
定义类变量、类常量和类方法使用static关键字
类变量
用static关键字修饰的域称为类变量或静态变量
类变量对实例变量中的每个类都是共享的
类方法
用static关键字修饰的方法称为类方法或静态方法
类方法不隶属于某一个实例
类方法可以通过两种方式调用
类名.方法名( );
对象名.方法名( );
类变量和类方法(续)
图形符号:
+:公用成员
-:私有成员
下滑线:静态成员

示例:使用实例变量、类变量及实例方法
在这个例子中演示了实例变量和类变量的用法
本例增加了类变量numOfObjects,用来跟踪创建Circle对象的个数

关于static关键字
静态方法(类)只能访问同类中的静态变量或者说静态(类)方法不能访问非静态成员
对应非静态成员需要先创建类的对象后才能使用,而静态成员在使用前不用创建任何对象
实例方法可以访问静态成员和非静态成员
main方法
由于java虚拟机要直接调用类的main方法,所以该方法的访问权限必须是public
由于java虚拟机执行main方法时不必创建对象,所以该方法必须是static的
该方法接收一个String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数
main方法不依赖于任何类
静态代码块
一个类中可以使用不包含在任何方法体中的静态代码块(static block),当类被载入时,静态代码块被执行,且只被执行一次,静态代码块一般用来进行类属性的初始化
static
类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次
当一个程序中用到了其它的类时,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类
单态设计模式
什么是单态设计模式
所谓单态设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例
单态设计模式的实现
声明private的构造方法
在类内部创建当前类的对象
定义public的方法再返回该对象
该对象必须是用static修饰的
你猜,我猜,他猜猜:初始化顺序

静态数据的初始化

静态数据的初始化
若数据是静态的(static),那么同样的事情就会发生;如果它属于一个基本类型(主类型),而且未对其初始化,就会自动获得自己的标准基本类型初始值;如果它是指向一个对象的句柄,那么除非新建一个对象,并将句柄同它连接起来,否则就会得到一个空值(NULL)。
如果想在定义的同时进行初始化,采取的方法与非静态值表面看起来是相同的。但由于static值只有一个存储区域,所以无论创建多少个对象,都必然会遇到何时对那个存储区域进行初始化的问题。下面这个例子可将这个问题说更清楚一些:
没用访问修饰符的数据和方法可以被同一个包中的任何类访问
public
用它定义的类、方法和数据,所有程序都可以访问
private
用它定义的方法或数据,只能由定义该方法和数据的类访问,其他类不能访问
访问器方法
针对类中的每一个属性可以设置访问器方法
读取方法(getter)
设置方法(setter)
通常把属性用private修饰,并设置相应的访问器方法
示例:使用private修饰符和访问器方法
在这个例子中, 半径设成私有数据,用访问器方法getRadius和setRadius来读取和修改半径

实例变量和实例方法
实例变量
类中的非静态域称为实例变量,实例变量属于特定的实例,实例变量只能通过实例来访问
实例方法
类中的非静态方法称为实例方法,实例方法属于特定的实例,实例方法只能通过实例来访问
实例方法可以如下方式调用
对象名.方法名( );
类变量和类方法
定义类变量、类常量和类方法使用static关键字
类变量
用static关键字修饰的域称为类变量或静态变量
类变量对实例变量中的每个类都是共享的
类方法
用static关键字修饰的方法称为类方法或静态方法
类方法不隶属于某一个实例
类方法可以通过两种方式调用
类名.方法名( );
对象名.方法名( );
类变量和类方法(续)
图形符号:
+:公用成员
-:私有成员
下滑线:静态成员

示例:使用实例变量、类变量及实例方法
在这个例子中演示了实例变量和类变量的用法
本例增加了类变量numOfObjects,用来跟踪创建Circle对象的个数

关于static关键字
静态方法(类)只能访问同类中的静态变量或者说静态(类)方法不能访问非静态成员
对应非静态成员需要先创建类的对象后才能使用,而静态成员在使用前不用创建任何对象
实例方法可以访问静态成员和非静态成员
main方法
由于java虚拟机要直接调用类的main方法,所以该方法的访问权限必须是public
由于java虚拟机执行main方法时不必创建对象,所以该方法必须是static的
该方法接收一个String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数
main方法不依赖于任何类
静态代码块
一个类中可以使用不包含在任何方法体中的静态代码块(static block),当类被载入时,静态代码块被执行,且只被执行一次,静态代码块一般用来进行类属性的初始化
static
类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次
当一个程序中用到了其它的类时,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类
单态设计模式
什么是单态设计模式
所谓单态设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例
单态设计模式的实现
声明private的构造方法
在类内部创建当前类的对象
定义public的方法再返回该对象
该对象必须是用static修饰的
你猜,我猜,他猜猜:初始化顺序

静态数据的初始化

静态数据的初始化
若数据是静态的(static),那么同样的事情就会发生;如果它属于一个基本类型(主类型),而且未对其初始化,就会自动获得自己的标准基本类型初始值;如果它是指向一个对象的句柄,那么除非新建一个对象,并将句柄同它连接起来,否则就会得到一个空值(NULL)。
如果想在定义的同时进行初始化,采取的方法与非静态值表面看起来是相同的。但由于static值只有一个存储区域,所以无论创建多少个对象,都必然会遇到何时对那个存储区域进行初始化的问题。下面这个例子可将这个问题说更清楚一些:



