4 面向对象
4.1 类和对象
类:现实世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。
对象:类的具体实例
4.2 成员变量和局部变量
4.2.1 作用范围
成员变量作用于整个类中。
局部变量作用于方法或语句中。
4.2.2 内存中的位置
成员变量在堆内存中
局部变量在栈内存中
4.3 匿名对象
创建对象时不起名字:new Car();
匿名对象是对象的简化形式
4.3.1 使用情况
1.对对象的方法只进行一次调用
2.作为实际参数进行传递
4.4 构造函数
4.4.1 特点
函数名与类名相同
没有返回值类型
不可以写return语句
4.4.2 作用
初始化对象
4.4.3 调用
对象建立的时候,自动调用,且只执行一次。
多个构造函数之间的调用,使用this关键字:this([参数,......]);[ ]表示可有可无。this只能定义在构造函数的第一行,初始化动作要先执行
4.5 this关键字
代表它所在函数所属对象的引用
4.5.1 作用
用于区分同名变量
用于构造函数之间互相调用
4.6 默认构造函数
当类中没有构造函数时,系统会默认给类加入一个空参数的构造函数,方便该类进行初始化。
当在类中定义了构造函数时,默认构造函数就没有了
4.7 构造代码块
4.7.1 表示
{ },代码写在{ }里面。
4.7.2 作用
初始化对象
4.7.3 调用
对象一建立就执行,而且优先于构造函数。
4.7.4 构造代码块和构造函数的区别
构造代码块是给所有对象进行统一初始化;
构造函数是给对应的对象进行初始化。
4.8 static(静态)关键字
用于修饰成员变量和成员函数
4.8.1 被static修饰的成员具备的特点
随着类的加载而加载,随着类的消失而消失
优先于对象存在
被所有对象所共享
可以直接被类名调用(类名.静态成员)
存放在共享区(方法区(类的方法)、数据区)
4.8.2 使用
静态方法只能调用静态成员
静态方法中不可以写this、super关键字
4.9 静态代码块
4.9.1 格式
static{
执行语句;
}
4.9.2 特点
随着类的加载而执行,优先于主函数,只执行一次。
4.9.3 作用
用于给类进行初始化。
注意:静态代码块中只能访问静态成员,不能访问非静态成员
4.10 设计模式
解决某一类问题最行之有效的方法。
java中有23中设计模式。
4.10.1 单例模式
解决一个类在内存中只存在一个对象
4.10.1.1 思想
想要保证对象唯一:
为了避免程序过多的建立对象,首先禁止程序建立该类对象。
还为了让程序能够访问到该类对象,只好在本类中自定义一个对象。
为了方便程序对自定义对象的访问,要提供一些访问方式。
4.10.1.2 具体实现
将构造函数私有化。(这样程序就不能够建立该类对象了)
在类中创建一个本类对象。
提供一个方法可以获取到该对象。
先初始化对象,称为:饿汉式
calss Single{
private Single(){ }
private static Single s = new Single();
public static Single getInstance(){
return s;
}
}
对象是方法被调用时才初始化,也叫对象的延时加载,称为:懒汉式
calss Single{
private static Single s = null;
private Single(){ }
public static Single getInstance(){
if(s==null){
s = new Single();
}
return s;
}
}
调用:Single.getInstance();