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;
}
//setter,getter略
public static void setCountry(String c){
country = c;
}
}
public String getInfo(){
return "姓名:"+ this.name +"、年龄:" +this.age + "、国家:"+ this.country;
}
}
public class JavaDemo{
public static void main(String [] args){
person.setCountry("中华人民共和国");
Person perA = new Person("张三",10);
System.out.println(per.getInfo());
}
}
这个时候对于程序而言,就有static方法和非static方法,这两个方法之间,在调用上就有了限制:
- static方法只允许调用属性或static方法
- 非static方法允许调用static属性或static方法
所有的static定义的属性和方法都可以在没有实例化对象的前提下使用,而所有的非static 定义的属性和方法必须要有实例化对象的情况下才可以使用。
如果说现在可以理解这个限制,那么对于之前的方法定义就可以得出新的结论:在最早讲解方法的时候强调过“当前定义的方法都是在 主类中定义的,并且由主方法调用的”
static定义的方法或者属性 都不是你代码编写之初所需要考虑的内容。只有在回避实例化对象调用并且描写公共属性的情况下才会考虑使用static定义的方法或者属性。
static应用编写一个程序类,这个类可以实现实例化对象的个数的统计,每一次创建新的实例化对象都可以实现一个统计操作:
此时可以创建一个static属性,因为所有的对象都共享一个static属性,那么在构造方法中可以实现数据的统计处理。
class Book{
private String title;
private ststic int count = 0;
public Book(String title){
this.title = title;
count ++;
System.out.println("第"+count+"本图书创建出来");
}
}
public class JavaDemo{
public static void main(Stirng [] args){
new Book("java");new Book("JSP");new Book("Spring");
}
}
实现属性的自动命名处理:
如果现在传递了title属性,就使用传递的属性内容,而如果没有传递title属性,则自动采用"NOTIYLE-编号"的形式进行该属性内容的定义。



