类的定义
类中包含:成员变量、成员函数
成员变量:成员变量定义在类中,在整个类中都可以被访问。成员变量随着对象的建立而建立,存在于对象所有的堆内存中。成员变量有默认初始化值。
局部变量:局部变量只定义在局部范围内,如函数内、语句内等。局部变量存在于栈内存中,作用范围结束,变量空间会自动释放。局部变量没有初始化值。
创建类:
class 类名{
}
创建类对象
类名 对象名=new 类名(初始化值);
匿名对象
匿名对象是对象的简化形式,匿名对象有两种使用情况。
当对对象方法仅进行一次调用时。
匿名对象可以作为实际参数时行传递。
封装(Encapsulation)
隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
将变化隔离
便于使用
提高重用性
提高安全性
封闭原则:
将不需要对外提供的内容都隐藏起来,
把属性都隐藏,提供公共方法对其访问。
private关键字
是一个权限修饰符
用于修饰成员函数、成员属性
被私有化的成员只在本类有效
常用之一:
将成员变量私有化,对外提供对的set,get方法对其进行访问。提高对数据访问的安全性。
构造函数
特点:
函数名与类名相同
不用定义返回值类型
不可以写return语句
作用:
给对象进行初始化
构造代码块
作用:给对象进行初始化,对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:构造代码块是给所有对象进行统一初始化的,而构造函数是给对应的对象初始化。
this关键字
特点:this代表所在函数所属对象的引用
当在函数内需要用到调用该函数的对象时,就用this.
static关键字
用于修饰成员(成员变量和成员方法)
被修饰后有如下特点:
随着类加载而加载
优先于对象存在
被所有对象所共享
可直接被类名调用
注意:
静态方法只能调用静态成员;
静态方法中不可以写this.super关键字;
主函数是静态的
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义为静态。
静态代码块
格式:
static{
…………..
}
特点:随着类加载而执行,只执行一次。用于给类进行初始化。
一个类可以使用不包含在任何方法体中的静态代码块。如果类中包含多个静态块,那么JVM安照他们在类中出现的顺序依次执行他们,每个静态代码块只会被执行一次。
类的构造方法用于初始化类的实例,而类的静态代码块则可用于初始化类,给类中的静态变量赋初值。静态代码块与静态方法一样,也不能直接访问类的实例变量和实例方法,而必须通过实例的引用来访问他们。
单例设计模块
饿汉式:
classSingle
{
private Single(){}
private static Single s = new Single();
public static SinglegetInstance()
{
return s;
}
}
懒汉式:
//对象是方法被调用时,才初始化,也叫做对象的延时加载。成为:懒汉式。
//Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
classSingle
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s = newSingle();
}
}
return s;
}
}
//记录原则:定义单例,建议使用饿汉式。