关于Java 的继承问题,子类会继承父类的哪些东西? 20
Whenyoudothis,youautomaticallygetallthefieldsandmethodsinthebaseclass---摘自《Thinkingin...
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访问就行了。 展开
---摘自《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访问就行了。 展开
5个回答
展开全部
和C++类似,可以继承基类的公共属性和方法。
在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承
但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承
但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
展开全部
除了用private修饰的成员, 其他都可以继承;final成员能继承,但不能修改;
static成员能继承,而且能修改;构造方法也是可以继承的
static成员能继承,而且能修改;构造方法也是可以继承的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了用private修饰的成员, 其他都可以继承;
final成员能继承,但不能修改;
static成员能继承,而且能修改;
构造方法也是可以继承的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了用private修饰的成员, 其他都可以继承
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该都能继承,只是一类对象能不能调用的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询