黑马程序员 ---- static 类方法

  ------- android培训java培训、期待与您交流! ----------


例1:

class Person
{
	String name;
	static String city = "China";
	int age;
	
	public Person(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	
	public String talk()
	{
		return name+"\t"+age+"\t"+city;
	}
	
	public static void setCity(String c)
	{
		city = c;
	}
}

public class Test01
{
	public static void main(String[] args)
	{
		Person p1 = new Person("zhansan",20);
		Person p2 = new Person("lisi",25);
		Person p3 = new Person("wangwu",30);
		
		System.out.println(p1.talk());
		System.out.println(p2.talk());
		System.out.println(p3.talk());
		
		System.out.println("*****************修改之后*********************");
		
		Person.setCity("USA");					// 由 Person 调用 setCity() 方法,对 city 的内容进行修改。
		
		System.out.println(p1.talk());
		System.out.println(p2.talk());
		System.out.println(p3.talk());
	}
}

注意:
1.  静态方法只能访问静态成员(静态先加载,非静态还未加载,所以不能访问非静态)。  非静态方法既可以访问静态也可以访问非静态。
  
2.  静态方法中不可以定义 this 、 super 关键字。(  因为 this 和 super 都代表对象,而静态优先于对象存在,所以静态方法中不可以出现 this 、super 。)
 
3.  主方法必须是静态的。


         
例2:
         
class Person 
{
	String name;
	
	public static void show()
	{
		System.out.println("hh");	// show 这个功能没有访问到非静态数据 name 时,show 功能可以定义成静态的。
	}

}

class privateTest
{
	public static void main(String[] args)
	{
		//Person p = new Person();
		//p.show();
		
		Person.show();	//直接用类名调用函数。
	}
}

例3:

 class Person
{
	String name;
	
	public static  void show()
	{
		System.out.println(name+"\t"+"hh");
	}
}

class Test
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.show();
	}
}

运行结果:
                Exception in thread "main" java.lang.Error: 无法解析的编译问题:
                不能对非静态字段 name 进行静态引用


                at Person.show(Test.java:7)
                at Test.main(Test.java:16)
    

例4:

class Person
{
	String name;
	
	public void show()
	{
		System.out.println(name+"\t"+"hh");
	}
}

class Test
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.show();
	}
}

点评:什么时候使用静态方法?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值