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调用。

猜你喜欢

转载自blog.csdn.net/ZripenYe/article/details/109451996