当前位置: 技术问答>java相关
大家快过来看看这个小程序!送分!来者有分!
来源: 互联网 发布时间:2015-10-28
本文导语: class A{ static int statInt = 4; static double statDouble = 16.0; int instInt; double instDouble; public static void statMethod(){ System.out.println ("statInt="+statInt);//为什么没有输出? } } class MyClass ...
class A{
static int statInt = 4;
static double statDouble = 16.0;
int instInt;
double instDouble;
public static void statMethod(){
System.out.println ("statInt="+statInt);//为什么没有输出?
}
}
class MyClass extends A {
static int statInt = 4;
static double statDouble = 16.0;
int instInt;
double instDouble;
public static void statMethod(){
System.out.println ("statInt="+statInt+
";statdouble="+statDouble);
}
public void instMethod(){
System.out.println("instInt="+instInt+
";instdouble="+instDouble);
}
public MyClass(int intArg, double doubleArg){
instInt = intArg;
instDouble = doubleArg;
}
public static void main(String args[]){
MyClass instance1 = new MyClass(1,2.0);
MyClass instance2 = new MyClass(3,4.0);
MyClass.statMethod(); //Outputs:statInt=4;
//statDouble=16.0
instance1.instMethod(); //Outputs:instInt=1;
//instDouble=2.0
instance1.statMethod(); //Outputs:statInt=4;
//statDouble=16.0
instance2.instMethod(); //Outputs:instInt=3;
//instDouble=4.0
instance2.statMethod(); //Outputs:statInt=4;
//statDouble=16.0
}
}
结果打印出:
statInt=4;statDouble=16.0
instInt=1;instDouble=2.0
statInt=4;statDouble=16.0
instInt=3;instDouble=4.0
statInt=4;statDouble=16.0
我想问,class A不是有个public static void statMethod(){},为什么在类加载的时候,没有输出什么东东?
static int statInt = 4;
static double statDouble = 16.0;
int instInt;
double instDouble;
public static void statMethod(){
System.out.println ("statInt="+statInt);//为什么没有输出?
}
}
class MyClass extends A {
static int statInt = 4;
static double statDouble = 16.0;
int instInt;
double instDouble;
public static void statMethod(){
System.out.println ("statInt="+statInt+
";statdouble="+statDouble);
}
public void instMethod(){
System.out.println("instInt="+instInt+
";instdouble="+instDouble);
}
public MyClass(int intArg, double doubleArg){
instInt = intArg;
instDouble = doubleArg;
}
public static void main(String args[]){
MyClass instance1 = new MyClass(1,2.0);
MyClass instance2 = new MyClass(3,4.0);
MyClass.statMethod(); //Outputs:statInt=4;
//statDouble=16.0
instance1.instMethod(); //Outputs:instInt=1;
//instDouble=2.0
instance1.statMethod(); //Outputs:statInt=4;
//statDouble=16.0
instance2.instMethod(); //Outputs:instInt=3;
//instDouble=4.0
instance2.statMethod(); //Outputs:statInt=4;
//statDouble=16.0
}
}
结果打印出:
statInt=4;statDouble=16.0
instInt=1;instDouble=2.0
statInt=4;statDouble=16.0
instInt=3;instDouble=4.0
statInt=4;statDouble=16.0
我想问,class A不是有个public static void statMethod(){},为什么在类加载的时候,没有输出什么东东?
|
父类和继承类的这两个方法的声明都是
public static void statMethod(){……},完全一样,所以不能说是overload,overload的参数是不同的;
static方法不能被override,只能被hidden,如果你把这两个方法的任意一个的static去掉都会导致错误;
这种情况下,你在继承类中用的是继承类的方法,要在继承类中使用父类的方法,可以使用peppi所说的方法.
public static void statMethod(){……},完全一样,所以不能说是overload,overload的参数是不同的;
static方法不能被override,只能被hidden,如果你把这两个方法的任意一个的static去掉都会导致错误;
这种情况下,你在继承类中用的是继承类的方法,要在继承类中使用父类的方法,可以使用peppi所说的方法.
|
这个方法被重载掉了
所以没有任何输出
所以没有任何输出
|
这个方法被重载掉了
????/
????/
|
如果要输出A中的statMethod(){},用supper.statMethod()
|
multimorphism的经典例子……
|
记得我的问题,你非常热心。我先UP晚上下班了过来看。(不过网络总是容易上不去。:))
|
static方法只是表示是类方法啊,但是方如果没执行当然就不会输出了。没看,下班了晚上来。:)
|
倒,class MyClass extends A 父子关系
|
因为statMethod()不是class A的构造器方法
|
方法被重载掉了!
倒!!~!~!
呵呵!
倒!!~!~!
呵呵!
|
override了自然只会有subclass的输出了 :)
|
因为java的方法默认的就是虚函数阿
|
这个函数被重载了啊!你可以看看书上关于函数重载的知识