黑马程序员技术交流社区
标题:
新人看毕老师基础视频看到了第五天,产生了一些疑问,希望论坛jr可以帮忙解答下。
[打印本页]
作者:
90后的96迷
时间:
2015-7-24 16:40
标题:
新人看毕老师基础视频看到了第五天,产生了一些疑问,希望论坛jr可以帮忙解答下。
class Person
{
private String name;
private int age;
Person()
{
System.out.println("A:name="+name+"..age="+age);
cry();
}
Person(String a)
{
name=a;
System.out.println("B:name="+name+"..age="+age);
cry();
}
Person(String a,int b)
{
name=a;
age=b;
System.out.println("C:name="+name+"..age="+age);
cry();
}
public void cry()
{
System.out,println("cry");
}
}
class Persondemo2
{
public static void main(String[] args)
{
Person p=new Person();
Person d=new Person("lili");
Person e=new Person("lili",4);
}
}
在面向对象构造函数中为什么上面那个方法写法是:public void cry();而不是public static void cry()。
作者:
90后的96迷
时间:
2015-7-24 16:42
本人新人,请大家帮忙解答下为什么不是public static void cry():)
作者:
AllenIverson
时间:
2015-7-24 16:59
本帖最后由 AllenIverson 于 2015-7-24 17:01 编辑
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是java语言中没有全局变量的概念。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。
所以public void cry()或者public static void cry()都是可以的,根据情况需要写。
静态方法可以直接通过类名调用,任何的实例也都可以调用。非静态方法的话必须通过对象去调用。
作者:
90后的96迷
时间:
2015-7-24 17:27
AllenIverson 发表于 2015-7-24 16:59
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是ja ...
嗯,谢谢帮忙解答的这么详细:)
作者:
90后的96迷
时间:
2015-7-24 21:10
定义非静态变量的方法时不能用static ,非静态变量是指需要创建对象才能对变量或方法进行引用的变量。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2