Java面向对象:声明static方法
static定义方法
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) //添加了一个static方法
{
country=c;
}
public String getInfo()
{
return this.name+this.age+this.country;
}
}
public class Test{
public static void main(String args[])
{
Person.setCountry("中华人民共和国");
Person per=new Person("张三",10);
System.out.println(per.getInfo());
}
}
注意:这个时候对于程序而言方法就有了两种:static方法、非static方法,这两个方法之间在调用上就有了限制
- static方法只允许调用static属性或static方法。
public static void setCountry(String c)
{
country=c;
name="sss";//调用非static属性
}
因为name不是静态属性。
- 非static方法允许调用static方法或static属性。
public String getInfo()
{
setCountry("xx");//在非static方法里面调用static属性
return this.name+this.age+this.country;
}
所有的static定义的属性和方法都可以在没有实例化对象的情况下使用,而所有的非static定义的属性和方法都必须要有实例化对象的存在下才可以使用。
如果说现在可以理解这个限制,那么对于方法定义就可以得出新的结论:以前强调过,当前定义的方法都是在主类中定义的,并且由主方法调用的。
public class Test{
public static void main(String args[])
{
new Test(). print(); //创建新对象调用非static方法
}
public void print() //非static方法
{
System.out.println("abcdefg");
}
}
public class Test{
public static void main(String args[])
{
print(); //static方法调用static方法
}
public static void print()
{
System.out.println("abcdefg");
}
}
static定义的方法或者属性都不是你代码之初你需要考虑的内容,只有在回避实例化调用或者考虑公共属性的情况下才会考虑static调用。
本文来自博客园,作者:{Zeker62},转载请注明原文链接:https://www.cnblogs.com/Zeker62/p/15046307.html