关于Java 的继承问题,子类会继承父类的哪些东西?

When you do this, you automatically get all the fields and methods in the base class
---摘自《Thinking in Java》 Reusing class一章。
当继承时,会自动得到基类中的所有的域和方法。
关于这句话如何解读?
1、private修饰的成员能够继承下来吗?
2、final修饰的成员能继承下来吗?
3、static修饰的成员能继承下来吗?
4、构造方法呢?

我自己找到答案了。谢谢两位回答的网友。
书中说的是没有错的。域和方法都会被继承。
在第四版《Thinking in Java》第8.2.4及8.2.5节有相关的回答。
域和方法都会被继承。
对于方法来说,只有非private,或者非final方法(private 方法自动是隐式final的)才能被覆盖。
对于域:最佳实践,我们会将域设置为private型的,并提供公开的get/set方法。但是从语法角度来说,可以设置为包,public,protected。任何域访问操作都将由编译器解析,因此不是多态(后期绑定)的。如果在子类中要访问基类版本的域,需要显式的使用super.field才能访问。

对于静态的,因为和域一样,是前期绑定,所以直接用类名.staticMember访问就行了。

和C++类似,可以继承基类的公共属性和方法。

在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承

但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
  当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
  1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
  2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
  3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
  2.子类继承父类的方法
  同样地,子类也并不是完全继承父类的所有方法。
  1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
  2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
  3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-25
除了用private修饰的成员, 其他都可以继承;final成员能继承,但不能修改;
static成员能继承,而且能修改;构造方法也是可以继承的
第2个回答  2014-11-07

除了用private修饰的成员, 其他都可以继承;

final成员能继承,但不能修改;

static成员能继承,而且能修改;

构造方法也是可以继承的

本回答被网友采纳
第3个回答  2014-11-07
除了用private修饰的成员, 其他都可以继承
第4个回答  2014-11-07
应该都能继承,只是一类对象能不能调用的问题
相似回答