Static 关键字

本文详细解析了Java中Static关键字的使用,包括静态属性、静态方法的特点与限制,以及静态代码块与实例代码块的区别。重点阐述了静态成员与实例成员的调用规则,以及静态方法的继承与多态特性。

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

Static 关键字

Static称作静态内容,可以直接修饰:变量,代码块,方法 ,修饰类的时候只能是内部类

代码块:

有一对{}组成 ,分为实例代码块{}和静态代码块 static{}
实例代码块,随着创建对象的个数进行初始化的,创建几个对象执行几次示例代码库的功能,一般用于设定初始化信息,一般使用的还是比较少的。
静态代码块:整个执行过程只执行一次,一般用于读取外部资源文件。在第一次使用该类的时候执行(Teacher t; 这个不叫第一使用 。 Teacher.test() 或 Teacher a = new Teacher() )
静态代码块的优先级高于实例代码块;
静态成员(代码块,变量,方法) 的优先级高于实例成员(代码块,变量,方法)

1. Static 修饰属性

当使用static修饰属性的时候,我们称之为静态属性,也称为类属性类变量
实例变量:只能由对象调用,每一个对象都有一个实例变量的副本,不能有类调用
(stu.name = ‘张三’ stu2.name = “李四”)
静态变量:属于类的,整个类共享一个值,所有的对象页共享同一个静态变量的值.而实例变量属于对象每个对象都有一个值
一般情况,静态变量需要通过类名直接调用 Student.address =”河北张家口”;
对象调用也可以,但会报警告

静态的内容的优先级高于实例内容
Static 不能修饰局部变量

2. Static 修饰方法

Static 修饰的方法是静态方法
静态方法中只能调用静态成员(静态属性和静态方法)
实例方法中可以调用所有的成员(静态的和非静态的都可以)
在静态方法中不能出现this,super关键字
原因:this作为当前对象在类名调用静态方法的时候还不存在当前对象

注意:

静态方法也是可以被继承的。如果子类也出现了同名的静态方法这时候子类的方法覆盖了继承的父类方法
在向上转型后父类引用调用的静态方法必须是父类中定义的方法而非子类中定义的方法 Person p = new Teacher() p.say()(如果say是一个静态方法,则调用的是父类中定义的。)
静态方法不能有多态。
父类中存在say()方法

public class Person { 
	public static void say(){
		System.out.println("父类这是一个静态的方法");
	} 
	public void eat(){
		System.out.println("这是父类吃饭的方法");
	}
}

子类中也出现了say()方法(子类的say()方法覆盖了父类的say()方法)

public class Teacher extends Person {
	private String name;
	public static void say(){
		System.out.println("这是子类的静态");
	}
	public void eat(){
		System.out.println("这是子类吃饭的方法");

在向上转型以后父类引用只能调用父类的静态方法

public static void main(String[] args) {
		Person p = new Teacher(); 
		p.say();  //父类的方法
		p.eat();   //子类重写后的 
		Teacher t = new Teacher();
		t.say();  //子类的方法
		t.eat();
	}

类的组成:代码块,属性,方法
代码块,属性,方法 有分为:静态的和实例的
类的组成:(静态代码块,实例代码块,静态属性,实例属性,静态方法,实例方法,构造方法不能是静态的)

所有的静态内容都属于类,只有类名能调用,
静态内容的优先级高于实例内容
实例内容属于对象,对象可以调用实例内容也可以调用静态内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值