static、final、abstract的使用及注意事项

本文深入解析Java中的static、final和abstract三大关键字,涵盖静态变量、最终变量、抽象方法及类的概念,探讨它们在代码设计中的应用及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 static关键字

修饰成员变量

用static修饰的成员变量不属于对象的数据结构;
static变量是属于类的变量,通常可以通过类名来引用static成员;
static成员变量和类的信息一起存储在方法区,而不是在堆中,一个类的static成员变量只有“一份”,无论该类创建了多少个对象。

static修饰方法

通常的方法都会涉及到对具体对象的操作,这些方法在调用时,需要隐式的传递对象的引用(this)。

static修饰的方法则不需要针对某些对象进行操作,其运行结果仅仅与输入的参数有关,调用时直接用类名引用。

由于static在调用时没有具体的对象,因此在static方法中不能对非static成员(对象成员)进行访问。static方法的作用在于提供一些“工具方法”和“工厂方法”等。

static块

static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源。

2 final关键字

final修饰变量

final关键字修饰成员变量,意为不可改变。
final修饰成员变量,两种方式初始化:

– 声明同时初始化
– 构造函数中初始化

final修饰方法

final关键字修饰的方法不可以被重写。
使一个方法不能被重写的意义在于:防止子类在定义新方法时造成的“不经意”重写。

final修饰类

final关键字修饰的类不可以被继承。
使一个类不能被继承的意义在于:可以保护类不被继承修改,可以控制滥用继承对系统造成的危害。

static final 常量

static final 修饰的成员变量成为常量,必须声明同时初始化,不可被改变。

3 abstract关键字

抽象方法和抽象类

•	由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法体实现,用一个分号结尾;
•	一个类中如果包含抽象方法,该类应该用abstract关键字声明为抽象类;
•	如果一个类继承了抽象类,必须重写其抽象方法(除非该类也声明为抽象类)。
抽象类不可以实例化
•	抽象类不可以实例化,例如,如果Shape是抽象类的话,下面的代码是错误的:
Shape s1 = new Shape();
•	即使一个类中没有抽象方法,也可以将其定义为抽象类,同样,该类不可以实例化。
•	abstract和final关键字不可以同时用于修饰一个类,因为final关键字使得类不可继承,而abstract修饰的类如果不可以继承将没有任何意义。
继承抽象类
•	一个类继承抽象类后,必须重写其抽象方法,不同的子类可以有不同的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值