1 static关键字
1.1概念
修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的。也就是说,可以不靠创建对象来调用。
1.2 使用格式
1.2.1 类变量
static 数据类型 变量名;
1.2.2 静态方法
修饰符 static 返回值类型 方法名 (参数列表){ // 执行语句
}
1.2.2.1 调用格式
// 访问类变量 类名.类变量名;
// 调用静态方法 类名.静态方法名(参数);
1.2.3 静态原理
- 是随着类的加载而加载的,且只加载一次。
- 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
它优先于对象存在,所以,可以被所有对象共享。

1.2.4 静态代码块
- 静态代码块:定义在成员位置,使用static修饰的代码块{ }。
- 位置:类中方法外。
- 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
public class ClassName{
static {
// 执行语句 }
}
1.2.5静态方法和成员变量的区别
静态变量也叫类变量 成员变量也叫对象变量
- 所属不同
- 静态变量属于类,所以也称为为类变量
- 成员变量属于对象,所以也称为实例变量(对象变量)
- 内存中位置不同
- 静态变量存储于方法区的静态区
- 成员变量存储于堆内存
- 内存出现时间不同
- 静态变量随着类的加载而加载,随着类的消失而消失
- 成员变量随着对象的创建而存在,随着对象的消失而消失
- 调用不同
- 静态变量可以通过类名调用,也可以通过对象调用
- 成员变量只能通过对 象名调用
2 继承
2.1 特点
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要 继承那一个类即可
2.1.1 成员变量
如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。
如果子类父类中出现重名的成员变量,这时的访问是有影响的。
父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 父类成员变量,类似于之前学过的 this 。
使用格式:
super.父类成员变量名
2.1.2 成员方法(重写)
如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。
**方法重写 **:(父类下方法重名)子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效 果,也称为重写或者复写。声明不变,重新实现。
2.2 构造方法
当类之间产生了关系,其中各类中的构造方法,又产生了哪些影响呢?
- 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。
- 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构 造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。
2.3 super和this
2.3.1super和this的含义
super :代表父类的存储空间标识(可以理解为父亲的引用)。
this :代表当前对象的引用(谁调用就代表谁)。
2.3.2用法·
- 访问成员
this.成员变量 ‐‐ 本类的
super.成员变量 ‐‐ 父类的
this.成员方法名() ‐‐ 本类的
super.成员方法名() ‐‐ 父类的 - 访问构造方法
this(…) ‐‐ 本类的构造方法
super(…) ‐‐ 父类的构造方法
子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super()。 super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现。
3抽象类
3.1抽象概念
抽象方法 : 没有方法体的方法。
抽象类:包含抽象方法的类。
3.2 使用格式
3.2.1 抽象方法
使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。
定义格式:
修饰符 abstract 返回值类型 方法名 (参数列表);
public abstract void run();
3.2.2抽象类
如果一个类包含抽象方法,那么该类必须是抽象类。 定义格式:
abstract class 类名字 { }
3.3 抽象类成员特点
- 抽象类的成员特点
- :成员变量:既可以是变量,也可以是常量。abstract不能修饰成员变量
- :构造方法:有。
- 用于子类访问父类数据的初始化。
- 成员方法:既可以是抽象的,也可以是非抽象的。
3.4 注意事项
- 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。 - 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。 - 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设 计。 - 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。
本文深入解析Java中的静态关键字应用,包括静态变量、静态方法、静态代码块的特性和使用方式,以及抽象类的概念、特点和注意事项,帮助读者掌握Java高级特性。
1267

被折叠的 条评论
为什么被折叠?



