我有两节课Parent
:
public class Parent {
public String a = "asd";
public void method() {
}
}
和Child
:
public class Child extends Parent{
private String a = "12";
private void method() {
}
}
在中Child
,我尝试覆盖method
提供编译时错误的父类,cannot reduce visibility of a method
这是可以的。
但是,为什么此错误不适用于财产a
?我也在降低的可见性a
,但没有给出错误。
这是因为Parent.a
和Child.a
是不同的东西。Child#method()
@Override
s
Parent#method()
,因为它们是方法。继承不适用于字段。
从《Oracle JavaTM教程-
继承》
中写道:您可以在子类中做什么
- 继承的字段可以像其他任何字段一样直接使用。
- 您可以在子类中声明一个与超类中的名称相同的字段,从而将其隐藏(不建议)。
- 您可以在子类中声明不在超类中的新字段。
问题内容: 当您在子类中重写某个方法时降低了其可见性时,为什么编译器会给出错误消息? 问题答案: 因为子类的每个实例仍然需要是基类的有效实例(请参见Liskov替换原理)。 如果子类突然失去了基类的一个属性(例如,一个公共方法),那么它将不再是基类的有效替代品。
今天我对封装感兴趣,对此我有一个基本问题。我理解为什么需要为私有字段添加setter和getter方法。但我看到为public int编写,字符串是其他的setter和getter。为什么我们需要为公共字段添加属性?我已经可以从任何地方访问公共变量。你怎么能用塞特和盖特控制我?谢谢
我在这里(有点)了解jdk 5 Reentry antLock的功能 但为什么我们想要一个“再进入者”锁呢?i、 e如果一个线程已经锁定了一个对象,为什么它需要再次获取它?
我正在努力学习java,但我遇到了一些问题,找到答案对我来说并不简单。我想做的任务似乎很简单。 我想添加一个标签框架。MyFrame是一个JFrame类,具有一些基本的修改,如大小、颜色等。 主代码如下所示: 我得到的结果就是我想要的:正确的结果 当我评论关于标签的最后一行时,它正在改变我的用户界面的外观。它只显示JFrame而没有我的标签。 非工作代码: 这是图形结果:不工作标签 我错过了一些基
问题内容: 在我们的J2EE应用程序中,我们使用EJB-3有状态bean来允许前端代码创建,修改和保存持久性实体(通过JPA-2管理)。 看起来像这样: 非常重要的是,为了避免过早提交,只有方法位于事务内,因此,如果调用,则不会在数据库中插入任何内容。 奇怪的是,在方法中,我们必须调用才能真正访问数据库。实际上,我尝试过发现,我们也可以调用或,以及与“ em有关”的任何东西。 我不明白这一点。与事
我想构建一个抽象类,并指定扩展类监听/处理的某些JavaFX属性。例如,我有: