/**
* 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;
}
}
彦舜绝对原创