1、使用static声明属性
如果希望一个属性被所有对象共同拥有,可以将其声明为static类型。
声明为static类型的属性或方法,此属性或方法也被称为类方法,可以由类名直接调用。
class Person{ // 定义Person类 String name ; // 定义name属性,暂时不封装 int age ; // 定义age属性,暂时不封装 static String country = "A城" ; // 定义城市属性,有默认值,static public Person(String name,int age){ this.name = name ; this.age = age; } public void info(){ // 得到信息 System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",城市:" + country) ; } }; public class StaticDemo02{ public static void main(String args[]){ Person p1 = new Person("张三",30) ; // 实例化对象 Person p2 = new Person("李四",31) ; // 实例化对象 Person p3 = new Person("王五",32) ; // 实例化对象 System.out.println("--------------- 修改之前 -------------") ; p1.info() ; p2.info() ; p3.info() ; p1.country = "B城" ; // 修改static属性 System.out.println("--------------- 修改之后 -------------") ; p1.info() ; p2.info() ; p3.info() ; } };
Person.country = "B城" ;
2、声明static方法
如果一个方法使用了static关键字声明,此方法可以直接使用类名进行调用。
注意:使用static方法,不能调用非static的属性或方法。
因为:static属性或方法,可以在对象没有实例化的时候就直接进行调用了。
class Person{ // 定义Person类 private String name ; // 定义name属性,暂时不封装 private int age ; // 定义age属性,暂时不封装 private static String country = "A城" ; // 定义城市属性,有默认值,static public static void setCountry(String c){ // 此方法可以直接由类名称调用 country = c ; } public static String getCountry(){ return country ; } public Person(String name,int age){ this.name = name ; this.age = age; } public void info(){ // 得到信息 System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",城市:" + country) ; } }; public class StaticDemo04{ public static void main(String args[]){ Person p1 = new Person("张三",30) ; // 实例化对象 Person p2 = new Person("李四",31) ; // 实例化对象 Person p3 = new Person("王五",32) ; // 实例化对象 System.out.println("--------------- 修改之前 -------------") ; p1.info() ; p2.info() ; p3.info() ; Person.setCountry("B城") ; // 调用静态方法修改static属性的内容 System.out.println("--------------- 修改之后 -------------") ; p1.info() ; p2.info() ; p3.info() ; } };