面向对象(三)
一、关键字的使用¶
1. packages
¶
- 为了更改的实现项目中类的管理。
- 使用
packages
声明类或接口所属的包,声明在源文件的首行。 - 包属于标识符,遵循标识符的命名规则和规范。
- 每
.
一次,代表一层文件目录 - 同一个包下不能命名同名的接口、类。
2. import
¶
- 在源文件中显式的使用
import
结构导入指定包下的类、接口。 - 声明在包的声明和类的声明之间。
- 如果需要导入多个结构,并列写出即可。
- 可以使用
xxx.*
的方式,表示导入xxx
包下的所有结构。 - 如果使用的类或接口是
java.lang
包下定义的,则可以省略import
结构。 - 如果在源文件中使用了不同包下同名的类,则必须至少有一个类使用全类名的方式显示。
- 使用
xxx.*
可以调用xxx
包下的所有结构,但是如果使用的是xxx
子包下的结构,则仍需要导入。
3. static
¶
用来修饰属性、方法、代码块、内部类
3.1 修饰属性¶
属性按照是否使用static修饰,分为静态属性(类变量)和非静态属性(实例变量)。
-
实例变量:当创建了类的多个对象,每个对象独立的拥有一套类中的非静态属性。当修改其中一个对象的非静态属性时不对导致其他对象中同样属性值的修改。
-
静态变量:当创建了类的多个对象,多个对象共享同一个静态变量,当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时是修改过的。
静态变量随着类的加载而加载。可以通过类.静态变量
的方法进行调用。
静态变量的加载早与对象的创建。
静态变量在内存中只会存在一份,存在方法区的静态域中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
3.2 修饰方法¶
随着类的加载而加载,可以通过类.静态方法
的方式调用。
1 2 3 4 5 6 7 8 9 10 11 |
|
静态方法中只能调用静态的方法或属性,非静态方法中,既可以调用非静态的方法和属性也可以调用静态的方法和属性。
3.5 单例模式¶
1. 饿汉式¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
2. 懒汉式¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
饿汉式和懒汉式的区别:
懒汉式:延迟对象的创建
饿汉式:对象加载时间过长,线程安全的
引用场景:
- 网站的计数器
- 应用程序的日志应用
- 数据库连接池
- 读取配置文件的类
4. final
¶
用来修改结构、类、方法、变量
4.1 修饰类¶
1 |
|
用来修饰一个类,此类不能被其他类所继承。比如:String
类、System
类、StringBuffer
类等。
4.2 修饰方法¶
1 |
|
用来修饰方法,表名此方法不可以被重写。比如Object
中的getClass()
4.3 修饰变量¶
1 |
|
用来修饰变量,此时的“变量”就称为一个常量
- 修饰属性:在显示初始化、代码块中、构造器中赋值
- 修饰局部变量:修饰形参时,表示此形参是一个常量,当调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值。
static final
用来修饰属性:全局常量
二、JavaBean¶
符合如下标准的Java类:
- 类是公共的
- 有一个无参的公共构造器
- 有属性,且有对应的get、set方法