5.6static关键字(二)

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方法调用。
注意:关于方法的调用问题
调用存在限制:

  1. static定义的方法不能调用非static的方法或属性
  2. 非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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值