黑马程序员技术交流社区
标题:
师兄师姐们,看看我这个错误是怎么回事?老是编译不通过
[打印本页]
作者:
ujump
时间:
2015-6-16 09:20
标题:
师兄师姐们,看看我这个错误是怎么回事?老是编译不通过
abstract class student
{
public abstract void study();
public void sleep()
{System.out.println("躺睡");}
}
class BaseStudent extends student
{public void study()
{System.out.println("base学习");}
public void sleep()
{System.out.println("坐睡");}
}
class Advsstudent extends student
{public void study()
{System.out.println("adcs学习");}
}
class duotaidemo
{
public static void main(String[] args)
{BaseStudent as=new BaseStudent();
as.study();
as.sleep();
Advsstudent ss=new Advsstudent();
ss.study();
ss.sleep();
fangf(new BaseStudent());
fangf(new Advsstudent());
}
public void fangf(Student ss)
{
ss.study();
ss.sleep();
}
}
复制代码
提示的错误是无法从上下文中静态中引用非静态方法,我去,快疯了我
作者:
ujump
时间:
2015-6-16 09:36
如果按照老师说的把方法提取出来 还是会编译通过的 但是按照老师的不加static就通不过为什么 :dizzy:
作者:
micro_hx
时间:
2015-6-16 09:37
Student是一个抽象类啊。。。。不能作为参数传递啊。。。。。
作者:
yang9876q
时间:
2015-6-16 09:46
本帖最后由 yang9876q 于 2015-6-16 09:48 编辑
你这总共出现两种错误,一个是找不到Student(fangf方法的参数应该是student,而不应该是Student,因为你定义的是student类,小写的),一个是静态中引用非静态方法(错误原因:主函数是静态的,其调用的方法也应该是静态的,fangf方法你定义的是非静态的)。
正确程序如下:
abstract class student
{
public abstract void study();
public void sleep()
{System.out.println("躺睡");}
}
class BaseStudent extends student
{public void study()
{System.out.println("base 学习");}
public void sleep()
{System.out.println("坐睡");}
}
class Advsstudent extends student
{public void study()
{System.out.println("adcs 学习");}
}
class duotaidemo
{
public static void main(String[] args)
{BaseStudent as=new BaseStudent();
as.study();
as.sleep();
Advsstudent ss=new Advsstudent();
ss.study();
ss.sleep();
fangf(new BaseStudent());
fangf(new Advsstudent());
}
public static void fangf(student ss)
{
ss.study();
ss.sleep();
}
}
复制代码
作者:
小悟空et
时间:
2015-6-16 10:00
因为fangf是非静态方法吧
作者:
ujump
时间:
2015-6-16 10:34
大神们 为甚么把方法抽取出来 新建个类 就不用静态了,郁闷 上面的同学说的很有用 我支持你们了……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2