java调用。Main方法调用
public class sa {
public void ne(){
int a=3;
int b=4;
int c;
c=a+b;
}
}
public class sd {
/**
* @param args
*/
public static void main(String[] args) {
sa k=new sa();
k.ne();
System.out.println(c);
}
}打印C为什么C要报错、
追问:嗯。其实这个就是像我说的变量定义的问题。哪像楼上那位同学的说的撒子继承额、完全是忽悠人嘛、
答案:这位童鞋,看你的困惑貌似你对Java中属性的分类还不是很清楚、对方法的调用不是很犀利、变量的生命周期也不是很清楚!
依据你的上述问题简单针对介绍下:
Java中的变量分类如图所示请放弃C或者其他语言中的全局变量,这样会有助于你理解Java中变量前有无加“static” 的区别。根据图片的总结,下面分析下你的程序:
你的程序中有2个类,sa和sd(很不规范的类标识符,类名最好大写)。首先sa类中有个ne( )方法,但是没有返回值,也就是说就算你使用sa.ne() 其实也得不到什么东西!原因有2:你在ne( )方法里没有写任何的打印语句; 你没有弄个返回值让调用者接收,充其量这个方法根本定义的没有意义。接着,你在sd类中创建了sa的对象,并调用了ne( ),然后想打印出c。 如果一个变量想直接使用的话,那么这个变量必须是类变量,此时类名可以省略。由此,你该总结出在Java中调用属性的格式:对象.属性名。看下面代码:
public class Sd{
// 定义个静态变量,也就是类变量
public static int c;
// 程序测试
public static void main(String[] args){
System.out.println(c);
}
}
最后,更改下你的源代码,使其正常运行
class Sa{
public int c;
// 把传入的2值之和计算在c上
public void ne(int a, int b){
c = a + b;
}
}
public class Sd{
public static void main(String[] args){
Sa k = new Sa();
k.ne(2,3);
System.out.println(k.c);
}
}
注意:一个类里只能有一个public class.
纠正下上面答友的错误,程序中没有出现“extends”关键字,何来继承之说!
如果对图片分类有异议的话,可以查看我的博客 http://949507869-qq-com.iteye.com/admin/blogs/1049257 关于变量的解释
很简单,因为你这个c在这个方法里面没有定义。
也就是无法解析。
你如果把最后输出的这句话放在上面那个方法就可以。
上一个:java的执行顺序是怎样的
下一个:怎么在电脑上运行java程序