问题1:
public class a{public void fun1(int i){} //不是static函数}public class b extends a{public static void fun1(int i){} //是static函数}这样到底算 重载 还是 覆盖呢?谢谢指教!!~~~问题2:
public class a{ //不是static classpublic void fun1(int i){} }public static class b extends a{ //是static classpublic void fun1(int i){} }
请问这样 是 重载 还是 覆盖 呢?ths。
public class a{public void fun1(int i){} //不是static函数}public class b extends a{public static void fun1(int i){} //是static函数}这样到底算 重载 还是 覆盖呢?谢谢指教!!~~~问题2:
public class a{ //不是static classpublic void fun1(int i){} }public static class b extends a{ //是static classpublic void fun1(int i){} }
请问这样 是 重载 还是 覆盖 呢?ths。
第二个,似乎只有内类才可以使用static修饰符吧?如果是内类的话,应该是覆盖.
public void test(){}
public void test(int i){}
public void test(String a){}
}这个叫重载.
你这样定义,可以运行通过、、、
应该会报错吧
第一个是书上的一个题目,怎么会是错误的呢。。
我也 知道 判断 重载 与 覆盖 都要看 返回值 和 形参的。。 可是在前面加个 static 声明为 静态 函数 就不知道怎么 判断了。。
这是一篇关于重载和覆盖的文章,可以作为参考!
重载(overload)、重写(overwrite)、覆盖(override)
后两者的概念是相同的。前者是同一个类中,由于参数列表不同而方法名字相同。而后二者是子类中出现与父类完全一样的方法,从而覆盖了父类的方法。
class overWriteSuper
{
public void sayHello()
{
System.out.println("I'm in super class.");
}
}class overWriteSub extends overWriteSuper {public void sayHello()
{
System.out.println("I'm in sub class.");
}public void sayGoodBye()
{
System.out.println("Good-bye all.");
}public void sayGoodBye(String str)
{
System.out.println("Good-bye "+str+".");
}
}public class overTest
{
public static void main(String[] args) {
overWriteSuper mySuper = new overWriteSuper();
mySuper.sayHello();
overWriteSub mySub = new overWriteSub();
mySub.sayHello();
overWriteSuper mySubOverWrite = new overWriteSub();//即使类型是父类但是还是调用子类的方法
mySubOverWrite.sayHello();
}
}显示结果:
I'm in super class.
I'm in sub class.
I'm in sub class.
Dan1980(也该有一些作为了) 说的好。。 看来我这 才真正 搞懂原理,,谢谢啦。。 看来书上 说的 很狡猾啊 ,他直接问 是重载 还是 覆盖。。没想到还没到边呢。呵呵。。