5.6.2static定义方法
static除了可以进行属性定义之外,也可以进行方法调用,一旦使用了static定义了方法,那么此方法就可以在没有实例化对象的情况下使用。
范例:定义static方法
public class Chinese {
private String name;
private int age;
private static String country="中国";//[静态成员属性]国家,暂时封装
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age =age;
}
public int getAge() {
return age;
}
public Chinese() {}
public Chinese(String name,int age) {
this.name =name;
this.age=age;
}
/**
* 定义static方法,此方法可以在没有实例化对象的情况下直接调用
* 利用此方法可以修改静态属性country的内容
* static方法中不允许使用this关键字
* @param c
*/
public static void steCountry(String c) {
country=c;
}
/**
* 可以使用this调用static属性
* 但从严格意义上讲,此时最好通过类名称调用。
* @return 对象完整信息
*/
public String getInfo() {
return "姓名:"+this.name+" 年龄:"+this.age+" 国籍:"+Chinese.country;
}
}
public class Chinese_d {
public static void main(String[] args) {
Chinese.steCountry("中华人民共和国");//调用静态方法,修改静态成员属性
Chinese per=new Chinese("张三",20);
System.out.println(per.getInfo());
}
}
执行结果
姓名:张三 年龄:20 国籍:中华人民共和国’
本程序对静态属性country进行了封装处理,这样的类外部竟无法进行此属性的调用,为了解决country属性的修改问题,所以设置了一个static方法和setCountry()方法。由于static定义的方法和属性均不受到实例化对象的限制,这样就可以直接利用类名称进行static方法调用。
注意:关于方法的调用问题
调用存在限制:
- static定义的方法不能调用非static的方法或属性
- 非static定义的方法可以调用static的属性或方法。
存在这种限制的原因如下:
1 使用static定义的属性和方法,可以在没有实例化对象的时候使用。
2非static定义的方法和属性,必须实例化对象之后才可以进行调用。
范例:static 定义的方法直接调用
public class NintyFive {
public static void main(String[] args) {//static方法直接调用
print();
}
public static void print() {
System.out.println("6666666");
}
}
6666666
范例:非static定义的方法只能通过实例化进行调用
public class NintyFive02 {
public static void main(String[] args) {
new NintyFive02().print();
}
public void print() {
System.out.println("666");
}
}
666