当前位置: 代码迷 >> Java相关 >> 关于继承
  详细解决方案

关于继承

热度:324   发布时间:2005-08-14 15:53:00.0
关于 final 的理解:在父类中定义为 final 的方法只是确保了该方法在其子类中不能被 overload, 但是确是可以被继承的, 所谓继承是指父类的方法和变量在其子类中有效,  至于是不是可以overload取决于你是不是将某一个变量或方法定义为 final , 如果定义为 final 则该变量或方法被最终定型,也就是说不能被改写.

所以很清楚了,如果将父类中的某一方法定义为 final,  对于子类而言,该方法是可见的,只是不能被overload 而已,也就是说不能被重载而已,或者说不能被修改而已.
----------------解决方案--------------------------------------------------------
看来是没办法了,呵呵!那只好做罢了!多谢各位!
----------------解决方案--------------------------------------------------------
父类方法不给子类用,搞笑啊,你们,用private不就可以了。kai啊,丢人呐
----------------解决方案--------------------------------------------------------
tempnetbar 的观点是对的,我上面的观点有误,现纠正如下: 通过将父类的变量或方法的访问修饰符的类型设置为private, 可以 实现父类的方法或变量不被子类访问, 举例如下: class Father { int a = 3; private int b = 4; void method1() { System.out.println("This is method1, set as default"); } private void method2() { System.out.println("This is method2, set as private"); } protected void method3() { System.out.println("This is method3, set as protected"); } public void method4() { System.out.println("This is method4, set as public"); } } public class Son extends Father { void changeValues() { a = 6; //b =8; // 如果将此注释符号去掉,则出错, //因为变量 b 在父类中被声明为 private, 那么其在子类中是不可以被访问的。 System.out.println("now a is " + a); } public static void main(String [] args) { Son sunObject = new Son(); sunObject.method1(); //sunObject.method2(); // 同样的如果这里的 注释号 被去掉,编译时 将报错,原因和上面的解释一样。 sunObject.method3(); sunObject.method4(); sunObject.changeValues(); } } 这回丢人丢大了,惭愧啊! tempnetbar, 如果你不指出,我到现在还不会清醒。多谢指正。 你以后也要当心点,我也要抓抓你的小辫子的,哈哈,
----------------解决方案--------------------------------------------------------
呵呵,见笑了kai,其实也不是有意抓小辫子,只是信口胡说的,呵呵,别生气啊。不知道你考过SCJP没有,我考过,不是说考过了怎么怎么,我觉得他对我的基础掌握确实有帮助啊呵呵
----------------解决方案--------------------------------------------------------
互相帮助麻, 能被别人指出错误是好事, 这样才有进步嘛.
生气, 何来气也? 希望过几天tmy300 能够看到这个帖子, 这样他就能知道正解了.

其实今天看到你的回帖, 仿佛一棍打醒梦中人, 这样的错误, 我当时怎么就这么冒失地说出了如此之谬论呢. 不解啊.还好你的及时提醒啊, 不然真的是要误人子弟了. 惭愧,惭愧...
----------------解决方案--------------------------------------------------------
多谢各位大虾的帮忙,呵呵,好多天没来了,其实我对private public 和protected是了解的,只是我老师不知道怎么想到这个怪问题的,哈哈!
我老师的意思是因为父类是别人写的,所以没有原代码,子类是老师写的,而那个父类的方法是public属性,所以就不能不继承,而又要在子类写完后别人用那个子类时不能用那个父类的public方法。
----------------解决方案--------------------------------------------------------
tmy300, 那个父类中的 public 方法 在 子类中不可见,我认为是不可能的,也就是说是做不到的。 别想了,没什么好想的。
----------------解决方案--------------------------------------------------------
没错,我想也应该是不可能的,呵呵!不想了!
----------------解决方案--------------------------------------------------------

楼上几位真实真知灼见,小弟受益匪浅,希望以后kai和tempnetbar能给我带来更多这样的精彩辩论


----------------解决方案--------------------------------------------------------
  相关解决方案