出了个小错误找不出来

pkitjy0516 2009-08-22 04:53:48
D:\Java>javac Hello.java
Hello.java:23: 无法从静态上下文中引用非静态 方法 print1
Class1.print1();
^
Hello.java:25: 无法从静态上下文中引用非静态 方法 print2
Class2.print2();
^
2 错误

class Class1
{
void print1()
{
System.out.println("Hello! My name Tinghua pan!");
}
}

class Class2
{
void print2()
{
System.out.println("I want to learn Java!");
}
}

public class Hello
{
public static void main(String args[])
{
System.out.println("Wellcome to Java for staying!");
Class1 Object1 = new Class1();
Class1.print1();
Class2 Object2 = new Class2();
Class2.print2();
}
}
...全文
158 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jamie0007 2009-08-23
  • 打赏
  • 举报
回复
非静态方法要先创建对象,再用对象调用其方法
24K純帥 2009-08-23
  • 打赏
  • 举报
回复
Object1.print1()
Object2.print2()就行
gutan_fox 2009-08-23
  • 打赏
  • 举报
回复
可以这样:
class Class1 {
void print1() {
System.out.println("Hello! My name Tinghua pan!");
}
}

class Class2 {
void print2() {
System.out.println("I want to learn Java!");
}
}

public class Hello {
public static void main(String args[]) {
System.out.println("Wellcome to Java for staying!");
Class1 Object1 = new Class1();
Object1.print1();
Class2 Object2 = new Class2();
Object2.print2();
}
}

也可以这样:
class Class1 {
static void print1() {
System.out.println("Hello! My name Tinghua pan!");
}
}

class Class2 {
static void print2() {
System.out.println("I want to learn Java!");
}
}

public class Hello {
public static void main(String args[]) {
System.out.println("Wellcome to Java for staying!");
Class1.print1();
Class2.print2();
}
}

静态方法内只能调用静态方法,如要在静态方法内调用非静态的方法,就要创建非静态方法所在类的对象
skyxiuli 2009-08-23
  • 打赏
  • 举报
回复
楼上的解释都不错,LZ以后有问题直接发帖子,大家会给你满意的答案。。
wuxuankaishi 2009-08-23
  • 打赏
  • 举报
回复
都已经定义了对象,为什么还要用Class来引用对象呢,Class是直接引用静态方法
huachao1 2009-08-23
  • 打赏
  • 举报
回复
...lz加油
yihanmushui5211314 2009-08-23
  • 打赏
  • 举报
回复
main()方法是静态方法,而静态方法只能不能访问非静态的方法和属性,你的printe1()和print2()都是非静态的呀!
applesdu 2009-08-23
  • 打赏
  • 举报
回复
路过一看....
wbnhty 2009-08-23
  • 打赏
  • 举报
回复
。。。。。高手都指教过了。。。。
java1109 2009-08-23
  • 打赏
  • 举报
回复

public static void main(String args[])
{
System.out.println("Wellcome to Java for staying!");
Class1 Object1 = new Class1();
Class1.print1(); // 这里应该改成Object1.print1();
Class2 Object2 = new Class2();
Class2.print2(); // 这里应该改成Object2.print2();
}
Anndy1984 2009-08-23
  • 打赏
  • 举报
回复
类名怎么可以直接调用非静态的方法呢?
lcj_up 2009-08-22
  • 打赏
  • 举报
回复
楼主加油!!!!
migo2008 2009-08-22
  • 打赏
  • 举报
回复
楼主加油~
pkitjy0516 2009-08-22
  • 打赏
  • 举报
回复
这是我第一次自己写的Java程序!
昨天才接触到Java
受教了!
j1223jesus 2009-08-22
  • 打赏
  • 举报
回复
类方法要加static关键字。。。
ZHANGBINFLY 2009-08-22
  • 打赏
  • 举报
回复
静态方法内只能调用静态方法,属于类,其他的非静态方法属于对象,在静态方法内调用非静态的方法可能还没有创建该非静态方法所述的对象,故可能引起错误
阿_布 2009-08-22
  • 打赏
  • 举报
回复

class Class1
{
void print1()
{
System.out.println("Hello! My name Tinghua pan!");
}
}

class Class2
{
void print2()
{
System.out.println("I want to learn Java!");
}
}

public class Hello
{
public static void main(String args[])
{
System.out.println("Wellcome to Java for staying!");
Class1 Object1 = new Class1();
Object1.print1();
Class2 Object2 = new Class2();
Object2.print2();
}
}


YY_MM_DD 2009-08-22
  • 打赏
  • 举报
回复
基本功!
knightzhuwei 2009-08-22
  • 打赏
  • 举报
回复
class Class1 
{
static void print1()
{
System.out.println("Hello! My name Tinghua pan!");
}
}

class Class2
{
static void print2()
{
System.out.println("I want to learn Java!");
}
}

public class Hello
{
public static void main(String args[])
{
System.out.println("Wellcome to Java for staying!");
Class1 Object1 = new Class1();
Class1.print1();
Class2 Object2 = new Class2();
Class2.print2();
}
}
loveofmylife 2009-08-22
  • 打赏
  • 举报
回复
Class1.print1();
Class2.print2();
改为Object1.print1(); 和Object2.print2();
只有声明为静态的方法才能使用类名直接调用

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧