黑马程序员技术交流社区

标题: 子类继承问题 [打印本页]

作者: Fightingforever    时间: 2014-10-25 09:19
标题: 子类继承问题
父类中的哪些方法子类是不能继承的呀!

作者: staycolorful    时间: 2014-10-25 11:36
1.子类和父类在同一包中的继承性:private的变量和方法(包括静态和实例)不可继承
2.子类和父类不在同一包中的继承性:private,友好的变量和方法(包括静态和实例)不可继承

作者: Fightingforever    时间: 2014-10-25 11:37
额!又被冷落了  没人回复
作者: 坏人卡    时间: 2014-10-25 12:14
子类继承父类的成员变量和成员函数,子类无法继承父类的构造函数。由于无法继承构造函数,可以使用super()调用,Java规定在子类的构造函数中,必须调用父类的构造函数。因为在子类构造函数中给成员变量赋值的时候,会产生重复代码,当没有明确调用父类构造函数时,编译器会自动添加super();调用父类无参数构造函数,super()括号可传入参数指定父类的构造函数。
作者: cs8630323    时间: 2014-10-25 19:03
staycolorful 发表于 2014-10-25 11:36
1.子类和父类在同一包中的继承性:private的变量和方法(包括静态和实例)不可继承
2.子类和父类不在同一包 ...

java中静态属性和静态方法可以被继承,但是不能重写
子类也继承了private,但是没有访问权限
作者: staycolorful    时间: 2014-10-26 09:55
cs8630323 发表于 2014-10-25 19:03
java中静态属性和静态方法可以被继承,但是不能重写
子类也继承了private,但是没有访问权限 ...

继承的前提是可视  private的变量和方法(包括静态和实例)都是不可视的,怎么可能继承???!!!
  1. class A{
  2.         private  int x=0;
  3. }
  4. class B extends A{
  5.         void  show(){
  6.                 System.out.println(x);
  7.         }
  8. }
复制代码

这段代码在编译时就提示错误:x是不可视的
作者: cs8630323    时间: 2014-10-26 11:49
staycolorful 发表于 2014-10-26 09:55
继承的前提是可视  private的变量和方法(包括静态和实例)都是不可视的,怎么可能继承???!!!

这 ...

class A{
        private  int x=0;
         int  a()
            {
              return  x;
            }
}
class B extends A{
        void  show(){
                System.out.println(super.a());
        }
}
作者: staycolorful    时间: 2014-10-27 15:53
cs8630323 发表于 2014-10-26 11:49
class A{
        private  int x=0;
         int  a()

a()方法是可以继承的 因为是友好类型 同一包中友好的变量和方法(包括静态和实例)是可以继承的
而继承的方法可以访问未被继承的变量和方法  就像楼主的例子  所以private虽然不被子类直接继承 但这部分内存并非成了垃圾
作者: 菜鸟小6    时间: 2014-10-27 15:58
谢谢,解释的很详细
作者: cs8630323    时间: 2014-10-27 16:33
staycolorful 发表于 2014-10-27 15:53
a()方法是可以继承的 因为是友好类型 同一包中友好的变量和方法(包括静态和实例)是可以继承的
而继承的 ...

不要过度夸大访问权限修饰符,它仅仅是限制访问权限
真累!我再好好说说。非静态域只能使用本对象调用,如果父类没有继承私有域,父类get方法可能怎么调用子类私有域呢?还有你用new B().x调用x,编译器告诉你x不可视,而不是无此变量.  ok?
作者: staycolorful    时间: 2014-10-27 16:42
cs8630323 发表于 2014-10-27 16:33
不要过度夸大访问权限修饰符,它仅仅是限制访问权限
真累!我再好好说说。非静态域只能使用本对象调用, ...

什么意思??!!!你有没有真认读我的回复???什么没有此变量???都说了它占内存空间!!!
作者: cs8630323    时间: 2014-10-27 17:12
staycolorful 发表于 2014-10-27 16:42
什么意思??!!!你有没有真认读我的回复???什么没有此变量???都说了它占内存空间!!! ...

呵呵,自己看,http://blog.csdn.net/xinglongbing/article/details/2911568
真是累啊,你不信我也去百度下啊
作者: Fightingforever    时间: 2014-10-27 18:07
cs8630323 发表于 2014-10-25 19:03
java中静态属性和静态方法可以被继承,但是不能重写
子类也继承了private,但是没有访问权限 ...

谢谢你 可爱的小企鹅!
作者: Rain2692    时间: 2014-10-27 18:09
私有类,私有成员变量子类都是不能继承的!
作者: cs8630323    时间: 2014-10-27 18:12
Rain2692 发表于 2014-10-27 18:09
私有类,私有成员变量子类都是不能继承的!

难道我写这么多你没看,唉
作者: cs8630323    时间: 2014-10-27 18:13
Fightingforever 发表于 2014-10-27 18:07
谢谢你 可爱的小企鹅!

不谢。。。。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2