java类中有哪些成员,关于java:哪些成员不是在子类中继承的?

我想回答以下问题:

A child class would not inherit certain members of the parent class. Name three

such members.

我知道私有成员不会继承到子类,默认成员也不会继承到包外部。有人能完成答案吗?

编辑:我相信静态成员是根据下面的演示继承的

public class sup {

public static void main(String agr[]){

}

protected static int staticInt=0;

protected final int finalInt=3;

protected int protectedInt=0;

public String publicString ="";

private int privateInt=8;

}

class sub extends sup{

public void del(){

staticInt=1;

staticInt=finalInt;

}

}

来自JLS的班级成员

Constructors, static initializers, and instance initializers are not members and therefore are not inherited.

叮叮叮叮!最后,正确的答案以及来自JLS的答案是:—)

@邓肯啊,该死!:)这确实是完全正确的答案。我是怎么想的…+ 1

从Oracle Java文档中继承:

A subclass inherits all the members (fields, methods, and nested

classes) from its superclass. Constructors are not members, so they

are not inherited by subclasses, but the constructor of the superclass

can be invoked from the subclass

所以我认为你这里缺少了构造器。静态方法和字段也不会被继承,当它们在子类中被重写时,它们只是重用签名和hide父类中方法/字段的实现。

对于静态字段和方法的继承,请将此讨论称为Duncan的steted,此伟大的教程将覆盖vs隐藏

请参见此讨论:Java中继承的静态方法吗?这与你最后一段不一致。

@邓肯,谢谢你!!我刚刚发现了overriden和hidden的区别:)

没有答案来说明术语的用法。

在子类中可见的成员在上面得到了回答。成员既是字段又是方法(每个都有自己的命名空间)。

继承作为子实例的一部分,是另一个问题:同样不可见的私有成员也是"继承"的。静态成员是类实例的一部分,不继承(也不能重写)。不能重写所有最终方法。

可论证的构造函数不是继承的;您必须在新的子构造函数中再次定义相同的签名。

类中的其他声明可以是类定义。在这里,关键字static的含义不同,人们可能会对可见性/继承性做出明显的声明。例如,对于具有.this的非静态内部类(递归概念)。

构造函数和静态初始值设定项以及实例初始值设定项。

你能解释为什么静态成员不被继承吗?我想这是术语的问题,这里讨论的静态方法和实例方法之间有一些细微的区别:docs.oracle.com/javase/tutorial/java/i and i/override.html

静态成员是继承的。我用示例程序测试它

你说的是能见度吗?继承和可见性是两个不同的东西。静态成员可能可见,但不能重写它们。

@邓肯,你先找到链接……

@尤金,我仍然不相信你能说静态方法不是遗传的。你是否有任何来源可以引用那些明确说明的地方?

@邓肯,我不明白。教程清楚地指出静态方法不是继承的,而是隐藏的。我不认为那是JLS的事。

@Eugene没有任何声明说"静态方法不是继承的"。我想你可能搞错了——看看这个问题:例如Java中继承的静态方法吗?还有穆纳伊姆的回答。

@邓肯不,我不是。我只是说,因为他们说静态方法隐藏在超类中,所以这一定意味着它不是继承的。我同意这本身并没有说明,但它是自动暗示的,至少对我来说是这样。

@尤金,你似乎认为遗传是超越能力的同义词。我认为那不正确。

@eugene参见jls的示例8.2-3(docs.oracle.com/javase/specs/jls/se7/html/jls-8.html jls-8.‌&8203;2)。这说明静态字段是继承的。

不能继承私有字段和构造函数。不能继承构造函数,因为它们不是超级类的成员。您可以从它的子类调用一个超类构造函数。您还可以访问超级类的私有成员,可以通过超级类的公共或保护方法访问。

-1个静态成员被继承。参见其他答案下的讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值