static定义方法总结,概览

本文由彦舜原创,全面探讨Java中static关键字用于定义方法的相关概念,包括静态方法的作用、特点、使用场景以及与非静态方法的区别,帮助理解面向对象编程中的静态成员应用。

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

/**
 *    static定义的属性和方法都不受实例化对象的控制,比如setter方法,直接通过本类,在主方法中,进行调用,
 * 而无需创建该类实例化对象进行调用。static属性亦是,故static定义的属性和方法都是独立于类的功能。
 * 
 *    但是,此时会出现一个特别麻烦的问题:方法除了分为  构造方法和普通方法  外,还分为了  static方法和非static方法。
 * 而static方法和非static方法更为复杂,它们之间的互访会受到限制。
 * 
 *    限制如下:
 *    		1、static方法不能直接访问非static属性或方法,只能调用static属性或方法/
 *          2、非static方法可以访问static的属性或方法,不受任何限制/
 * 
 *    通过上述总结,初学者不难发现,前期的学习中,主要在主类中创建方法,在主方法中进行调用、执行,即在主类中创建的
 * 被主方法调用的方法,都需要被static修饰。
 *    后来,接触了何为对象,创建在抽象模板类中,方法的定义格式,没有static。
 *    至此,这就实现了,static修饰的主方法对抽象类中非static方法,通过创建抽象类对象的调用。
 *    
 *    所有的非static方法,必须由对象调用。思考:所有的非static方法,都创建在抽象模板类中,还是一般都创建在抽象
 * 模板类中?
 * 
 *    非static方法,一般创建在抽象类中,也可创建在主类中,通过实例化对象调用。
 */

package cm.statics.method;

//这个类用来测试static关键字定义方法的用法
public class ExampleTninetyFour {
	//static定义的主方法,可直接调用同一个类中static定义的方法或属性:比如被static定义的fun()方法
	public static void main(String[] args) {  
		//方法定义在主类中,并且同被static声明,主方法可以直接进行调用
		fun(); 
	}
	
	public static void fun() {  //static定义的,在主类中的方法
		System.out.println("Hello World!  Hello JAVA!  Hello Myself!");
	}
}
package cm.statics.method;

//这个类用来测试不使用static声明方法时,static方法对非static方法的调用
public class ModelTninetyFive {
	public static void main(String[] args) {
		//1、static方法访问非static方法,必须创建对象才能调用
		//变量/对象s的小黄线:The value of the local variable s is not used(局部变量s的值未被使用)
//		Static s = new Static();
//		//使用对象s的地址值调用堆内存中对象的feel()方法,小黄线消失
//		s.feel();
		Static s = new Static().feel();
		
		//2、static方法间,直接使用
		fun();
		
		//3、创建匿名对象,此处调用更便捷
		new ModelTninetyFive().fun2();  
		
		//4、创建普通对象调用fun2(),多绕了一个弯
		ModelTninetyFive m = new ModelTninetyFive();
		m.fun2();
		
		//5、返回值形式的static语法使用
//		ModelTninetyFive m2 = new ModelTninetyFive().fun3();
		ModelTninetyFive m2 = new ModelTninetyFive().fun2();
		
	}
	
	public static void fun() {  //static定义的,在主类中的方法
		System.out.println("Hello World!  Hello JAVA!  Hello Myself!");
	}
	
	public ModelTninetyFive fun2() {
		System.out.println("字数已够几十万字,等待时机出书");
		return null;
	}

//	public ModelTninetyFive fun3() {
//		System.out.println("字数已够几十万字,等待时机出书2");
//		return null;
//	}
}

//1、创建抽象模板类,所有的非static方法都创建在抽象类中?
class Static{
	//1、返回值形式的static语法使用
	public Static feel() {
		System.out.println("请问你的感受是什么?莫等闲,白了少年头,空悲切");
		return null;
	}
}

彦舜绝对原创

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值