不是说了父类中的声明为final类型的方法不可以被子类集成吗,如何
不是说了父类中的声明为final类型的方法不可以被子类集成吗,怎么?
RT,见下面一段程序
package ch06;
class Father {
public final void test(){
System.out.println("父类中final方法 ");
}
}
public class Son extends Father{
public void test( int i){
System.out.println("子类中重写的test(int)方法 "+i);
}
public static void main(String[] args){
Son son=new Son();
son.test();//Father类中 test()方法为什么能够被继承呢?他不是final类型的吗,不可以继承;
son.test(100);//Son类中重载的test(int i)方法;
}
}
//////////
为何子类可以继承得到父类被声明为final类型的方法,书上说不可以,我一时迷惑了。各位,看看说说为什么?
------解决方案--------------------
我了个去,子类和父类相同的方法之间才叫Overwrite(重写),要求是两个方法的方法名和形参都是相同的;
现在这两个函数的形参明显是不一样的,所以根本就不是Overwrite,而是Overload(重载),重载肯定是可以的。
只是父类中的final方法不能被Overwrite(重写)而已。
------解决方案--------------------
大家都误解楼主的意思了,很明显楼主问的是final方法是否可以继承!
答案是可以继承,但不可以被覆盖!哪本书告诉你不可以继承了?final方法是防止子类覆写修改,子类继承直接使用是可以的,建议楼主看thinking in java
------解决方案--------------------
其实很简单,改后代码如下
RT,见下面一段程序
package ch06;
class Father {
public final void test(){
System.out.println("父类中final方法 ");
}
}
public class Son extends Father{
public void test( int i){
System.out.println("子类中重写的test(int)方法 "+i);
}
public static void main(String[] args){
Son son=new Son();
son.test();//Father类中 test()方法为什么能够被继承呢?他不是final类型的吗,不可以继承;
son.test(100);//Son类中重载的test(int i)方法;
}
}
//////////
为何子类可以继承得到父类被声明为final类型的方法,书上说不可以,我一时迷惑了。各位,看看说说为什么?
------解决方案--------------------
我了个去,子类和父类相同的方法之间才叫Overwrite(重写),要求是两个方法的方法名和形参都是相同的;
现在这两个函数的形参明显是不一样的,所以根本就不是Overwrite,而是Overload(重载),重载肯定是可以的。
只是父类中的final方法不能被Overwrite(重写)而已。
------解决方案--------------------
大家都误解楼主的意思了,很明显楼主问的是final方法是否可以继承!
答案是可以继承,但不可以被覆盖!哪本书告诉你不可以继承了?final方法是防止子类覆写修改,子类继承直接使用是可以的,建议楼主看thinking in java
------解决方案--------------------
其实很简单,改后代码如下
- Java code
final class Father { public final void test(){ System.out.println("父类中final方法 "); } } public class Son extends Father{ public void test( int i){ System.out.println("子类中重写的test(int)方法 "+i); } public static void main(String[] args){ Son son=new Son(); son.test(); son.test(100); } }
------解决方案--------------------