static关键字也可以进行方法的定义,static方法的主要特点在于,其可以直接由类名称在没有实例化对象的情况下进行调用。
范例:定义static方法
class Person{ //创建所有同一个国家的类
private String name;
private int age;
private static String country = "中华民国"; // 国家,暂时不封装
public Person(String name,int age){
this.name = name;
this.age = age;
}
public static void setCountry(String c){
country = c;
}
// setter、getter略
public String getInfo(){
return "姓名:" + this.name +
"、年龄:" + this.age +
"、国家:" + country;
}
}
public class JavaDemo { //主类
public static void main(String [] args){
Person.setCountry("中华人民共和国");
Person per = new Person("张三",10);
System.out.println(per.getInfo());
}
}
这个时候对于程序而言方法就有了两种:static方法、非static方法,这两个方法之间在调用上就有了限制。
- static方法只允许调用static属性或static方法;
- 非static方法允许调用static属性或static方法;
所有的static定义的属性和方法都可以在没有实例化对象的前提下使用,而所有的非static定义的属性和方法必须要有实例化对象的情况下才可以使用。
如果说现在可以理解这个限制,那么对于之前的方法定义就可以得出新的结论:在最早讲解方法定义的时候强调过:“当前定义的方法都是在主类中定义的,并且由主方法调用的”。
public class JavaDemo { //主类
public static void main(String [] args){
print();
}
public static void print(){
System.out.println("www.aliyun.com");
}
}
public class JavaDemo { //主类
public static void main(String [] args){
new JavaDemo().print();
}
public void print(){
System.out.println("www.aliyun.com");
}
}
static定义的方法或者是属性都不是你代码编写之初所需要考虑的内容,只有在回避实例化调用并且描述公共属性的情况下才会考虑使用static定义的方法或者是属性。
网友评论