黑马程序员技术交流社区
标题:
关于static访问的问题
[打印本页]
作者:
落叶归根
时间:
2013-9-11 11:06
标题:
关于static访问的问题
本帖最后由 落叶归根 于 2013-9-11 16:58 编辑
class Man
{
static void home ()
{
System.out.println("HOLLOw");
}
public static void main (String[] args)
{
Man.home();
}
}
问题是可以直接调用Man类中的Home方法吗?
作者:
CHJ
时间:
2013-9-11 11:10
本帖最后由 CHJ 于 2013-9-11 11:11 编辑
你试一下啊!! 你这主函数,在类里面么?
作者:
武嘉豪
时间:
2013-9-11 11:15
class ManDemo
{
static void Home ()
{
System.out.println("HOLLOw");
}
}
class Man
{
public static void main (String[] args)
{
ManDemo.Home();
}
}
复制代码
静态方法最大的特点就是,不用生成类的实例对象,直接可以用。
它的语法格式:<类名>.<类变量名|类方法名>
作者:
静以修身
时间:
2013-9-11 11:20
你的程序有点点问题:首先你的主函数定义在类外面了,其次在主函数调用Home()方法的时候h要大写,Man.home()改成Man.Home(),类中的静态方法可以直接通过类名来访问,即类.静态方法,不需要建立对象,所以是可以直接调用Man类中的Home方法。
作者:
赵凯
时间:
2013-9-11 11:31
你写的这个不对吧,应该在定义一个class类,将主函数放进去,
class Man
{
static void Home ()
{
System.out.println("HOLLOw");
}
}
class Test{
public static void main (String[] args)
{
Man.Home();
}
}
静态方法可以不创建对象,直接用类名调用,类名.方法名
作者:
周文斌
时间:
2013-9-11 12:52
楼上的都说了代码上的小瑕疵,我就再解释一下为什么能调用吧。
加载一个类的时候,先加载他的静态方法,静态属性,非静态变量,然后是构造方法(事实上他先于非晶态变量调用,但会等待非晶态变量执行结束后再继续执行)。然后才是普通的方法(调用时才加载)。因此这个类创建对象之前,已经有他的静态方法&属性了。所以可以直接类名.属性名调用。
作者:
李锡碧
时间:
2013-9-11 13:53
class Person{
//成员变量(实例变量)。创建对象之后,内存中才出现
String name;
//静态成员变量(类变量)。Person类加载进内存,就存在。
static String country = "CN";
//非静态方法
public void show(){
System.out.println(name+":"+country);
}
//静态方法
public static void show_1(){
System.out.println(country);
//System.out.println(this.name); //this,super不能在静态方法中使用
//System.out.println(name); //name在实例创建前没有。。。
}
}
class StaticDemo{
public static void main(String[] args){
Person p = new Person();
p.name = "zhanggsan";
p.show();
System.out.println(Person.country);//输出CN
Person.show_1();
}
}
复制代码
类中的静态方法可以直接通过类名来访问(类.静态方法)不需要建立对象。。。
wenti.png
(58.41 KB, 下载次数: 50)
下载附件
2013-9-11 13:51 上传
作者:
lonely_zb
时间:
2013-9-11 15:42
类中的静态方法可以直接通过类名打点来访问,即类.静态方法
不需要建立对象,所以是可以直接调用Man类中的Home方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2