(九)static 与 final 关键词的使用

(九)static 与 final 关键词的使用

  1. static关键词的用法
    ①修饰成员变量,全局使用,在类被加载的时候,就会被执行。
    ②修饰静态成员方法,且方法中只能纯在静态成员变量;
    ③static静态代码块 ,类加载时执行。一般用于初始化变量。
    注意:当子类继承父类时候,父类中含有static关键词修饰的变量,方法都不能被重写(覆盖)。
    如果子类写了一个与父类相同的静态方法,那就不叫覆盖了,而是叫做隐藏。关于这个可以参考下下该文档:静态方法能被子类重写吗?

我的总结就是:当子类“ 重写 ”了父类的静态成员方法,创建对象的时候,若调用的静态方法,那么自会调用父类的成员方法,而调用普通方法,则会调用子类重写的父类的普通成员方法。不过现在好像不能使用实例化对象来调用静态成员方法了,写上了编译也不会通过。

例子如下:

package _03_static和finall关键字;

/** 
* @author 刘平远
* @version 创建时间:2019年8月12日 上午11:04:05 
* 类说明 :static 关键字的使用
*static 只能修饰成员,不能修饰局部变量
*/
public class test {
	//常量不能被修改,一般会用static final修饰,
	static final double pi=3.14;

	//非静态方法和成员是同时加载的,必须在实例化之后才可以加载
	public void hello1() {
		System.out.println(num);
		System.out.println(name);
	}
	
	private String name;//成员变量
	static int num;//类变量
	//static 静态代码块  
	//不需要调用,只会执行一次,在类被加载时候,一般用于初始化变量。
	static {
		System.out.println("这是一个静态代码块!不需要调用");
		//name="xxx";//只能写又被static关键词修饰的成员变量。
		System.out.println(num);
		num++;
	}
	static void hello() {
		//static int c=1;//err  不能使用static 修饰局部变量
		//即静态方法只能访问静态成员,且不能使用this,super关键字
		//static 方法不能被非静态方法覆盖。
		System.out.println("静态方法");
	}
	
	public static void main(String[] args) {
		//所有类共享num,
		//访问方式一:实例化对象.变量名称
		test t1=new test();
		test t2=new test();
		System.out.println(t1.num);
		System.out.println(t2.num);
		//访问方式二: 直接调用 类名.便改良名称
		System.out.println(test.num);
		//静态方法 的访问方式也是相同。
		hello();
	}
}

  1. final关键词的用法
    final意思为最终的,也就是说被他修饰的东西都是最后一次的,即不可更改的。
    final可以修饰:
    ①类:被final修饰的类无法被继承
    ②变量:不能被重新赋值,无法被更改值。
    ③方法:当作为父类方法时,被子类继承,在子类中不能重写(覆盖)被final修饰的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值