【Java入门合集】第四章继承(三)
博主:命运之光
专栏:JAVA入门
学习目标
1.掌握继承性的主要作用、实现、使用限制;
2.掌握this和super的含义及其用法;
3.掌握方法覆写的操作;
4.掌握final关键字的使用;
5.掌握类变量、实例变量和局部变量的含义和用法;
6.掌握static和final修饰符的作用;
成员变量与局部变量
编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。
成员变量—实例变量
定义在类中的变量叫成员变量,类的成员变量有两种:一种是实例变量,一种是类变量。
成员变量—类变量
如果想让一个类的所有实例共享数据,就用类变量。
变量前有关键字static,则为类变量。存储在公共区,属于类所有,所有该类的对象共享这一个变量。
局部变量
定义在方法中的变量叫做局部变量。
局部变量
- 形参(方法、构造器中定义的变量)
- 方法局部变量(在方法内定义)
- 代码块局部变量(在代码块内定义)
注:
1.局部变量除形参外,均需显式初始化(赋值)后才能使用;
2.局部变量的生存周期只存在于方法内,方法调用结束,局部变量也就不存在了。
实例方法与类方法
🍓实例方法:定义方法时,不使用static修饰,属于对象所有。
🍓类方法:定义方法时,使用static修饰,是无须创建类的对象就可以调用的静态方法,静态方法可以通过类名来调用,属于类所有,所有对象可以共用。
实例方法调用: 对象名.方法();
类方法调用: 对象名.方法();或者 类名.方法();
注意:在static方法(类方法)内部只能访问类的static修饰的属性(类变量)或方法,不能访问类的非static的结构(非staitic的属于对象,需先创建对象才能访问)。
类(静态)方法 和 实例方法总结:
- 类方法属于类所有,第一次加载类的时候就存在于类的内存中了,不用创建对象就能使用。
- 类方法中只能使用类变量(静态变量),因为他们都是在类加载时就存在了。
- 类方法中不能使用实例变量,因为实例变量必须在创建了对象后才存在于对象的内存里。
- 实例方法是对象创建后才存在,有了实例方法后,类变量和实例变量肯定都存在了,所以实例方法可以使用类变量和实例变量。
static代码块
🍓🍓从上述内容中,可以看出在类体内、方法外面只能定义成员变量,不能写普通java代码。
实际上有一种情况,可以写static代码块。格式如下:
static {
普通java代码;
}
利用静态代码块可以对一些static变量进行赋值
🍓以 “static{” 开始,到 “}” 结束,中间可以写普通java代码;
🍓这整段代码可以放在类体内,方法外面,称为static代码块;
🍓static代码块的执行是在加载类的时候执行,不需要对象。
final修饰符
在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。①final标记的类不能被继承。提高安全性,提高程序的可读性。
②final标记的方法不能被子类覆写。
③final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
- final标记的成员变量必须在声明时或在每个构造器中或代码块中显式赋值,然后才能使用。
- 如final double MY_PI = 3.14;
无论是类变量、实例变量还是局部变量,使用final修饰符,则该变量初始化后,它的值就不能再改变了,因此也可以称为常量。
对象的初始化顺序
🍓🍓类变量(静态变量)、实例变量、类方法(静态方法)、实例方法、静态代码块、构造方法等的执行顺序称为对象的初始化顺序。
1.无继承的执行顺序为:
(1)类变量和static代码块。
(2)实例变量。
(3)构造方法。
其中(1)只执行一次,(2)、(3)要根据创建的对象个数决定,创建几个对象就重复执行几次。
2.有继承的执行顺序为:
(1)父类的静态变量(类变量)和静态代码块(只执行一次);
(2)子类的静态变量(类变量)和静态代码块(只执行一次);
(3)父类的实例变量(根据创建对象的个数决定,每创建一个对象执行一次);
(4)父类的构造方法(根据创建对象的个数决定,每创建一个对象执行一次);
(5)子类的实例变量(根据创建对象的个数决定,每创建一个对象执行一次);
(6)子类的构造方法(根据创建对象的个数决定,每创建一个对象执行一次);