一、类间访问
1.1 package包介绍
包概述
- 包本质上就是文件夹
- 当在IDEA中创建多级包时,通常适用
.
进行分割 - 包的命名一般为公司域名去掉www后的翻转,例如
com.xu.xxx
,且字母都为小写 - 合理的分包可以便于我们后期对代码的管理
- 在IDEA的包下创建类后,会自动在第一行生成package语句,若使用记事本则必须手写
1.2 包的注意事项
- package语句必须是程序的第一条可执行代码,即其余代码不可以写在package语句的上面,否则报错
- 每个java文件中只能拥有一条package语句,若无包名,则可以没有package语句
1.3 类间的访问
- 若在同一个包下,则可以直接用类名的方式使用对应类
- 若在不同包下,则有两种方式访问
- 使用import关键字进行导包
- 相当于把其他包中的类导入本地的命名空间中,导入后可以直接使用类
- 此方法可用于绝大部分情况
- import关键字必须在package关键字下,class关键字之上
- 通过全类名的方式访问
- 全类名即包名+类名
- 此方法可以使用在多个包下出现了相同类名的类,导入操作会导致同一命名空间下的标识符重名;此时就可以使用全类名的方式调用
- 使用import关键字进行导包
二、static关键字与代码块
2.1 static关键字介绍
-
static是java的一个修饰符,英文译为静止的,静态的。可以修饰成员方法和成员变量
-
被static修饰的成员变量,一般叫做静态变量
-
被static修饰的成员方法,一般叫做静态方法
-
2.2 static修饰的特点
其特点是决定是否使用static关键字进行修饰的判断依据:即是否优先于对象加载且需要被所有对象共享或可以直接通过类名使用而不需要创建对象
具体特点如下:
- 被static修饰的成员(变量和方法),会被该类的所有对象共享
- 随着类的加载而加载,优先于对象存在。(对象需要类加载后,才能创建)
- 既可以通过**类名.**的方式调用,也可以通过对象名.的方式调用
2.3 static关键字注意事项
- 静态方法只能访问静态的成员
- 因为静态方法优先于对象存在,即优先于其他非静态成员存在
- 而非静态成员只有在对象创建后,才可以进行使用
- 非静态方法可以访问静态成员,也可以访问非静态的成员
- 静态方法中是没有this关键字
- 因为static优先于对象加载,而this代表了当前对象的引用
2.4 代码块概述
在java中,使用{}
包裹住的代码被称为代码块,共分为3种:
- 局部代码块(就是方法中的内容)
- 位置:方法中定义
- 作用:限定变量的生命周期,及早释放,提高内存利用率
- 构造代码块(构造对象前会执行的语句)
- 位置:类中方法外定义
- 特点:每次构造方法执行的时候,都会执行该代码块中的代码,并且在构造方法执行前执行
- 作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性
- 静态代码块(可用于提前初始化一些数据)
- 位置:类中方法外定义
- 特点:需要通过static关键词修饰,随着类的加载而加载,并且只执行一次
- 作用:在类加载的时候做一些数据初始化的操纵
三、继承
3.1 继承概述
继承:让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员
- 注:若子类和父类不在同一个包中,则默认权限修饰符下的成员也无法使用(详情见3.7 权限修饰符)
3.2 继承的原理
-
子类中所有的构造方法默认都会访问父类中无参的构造方法
-
子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。所以子类初始化之前,一定要完成父类初始化,但这并不意味着创建了父类对象
-
如何完成父类初始化?所有构造方法的第一条语句默认都是:super()(见3.6 方法重写),即调用父类中的无参构造方法完成父类的初始化
注:如果我们编写的类,即使没有手动指定父类,系统也会自动继承
Obj
-