这是我的密码
class Hello{
void method(){
System.out.println("super method");
meth();
}
private void meth(){
System.out.println("sup meth");
}
}
public class HelloWorld extends Hello{
//@Override - would fail as meth is private in Hello
protected void meth(){
System.out.println("sub meth");
}
protected void method(){
super.method();
}
public static void main(String []args){
new HelloWorld().method();
}
}
super method
sup meth
super method
sub meth
结果为上述结果之一。从meth
调用meth
仍然调用子类的meth
,即使从词汇上讲,meth调用在超类内部!那么,当meth
是私有的时候,为什么会有不同的行为呢?
___________edit____________
代码是这样的吗
class Hello{
void method(){
System.out.println("super method");
meth();
}
protected void meth(){
System.out.println("sup meth");
}
}
public class HelloWorld extends Hello{
//@Override - would fail as meth is private in Hello
protected void meth(){
System.out.println("sub meth");
}
protected void method(){
super.method();
}
public static void main(String []args){
new HelloWorld().method();
}
}
O/P将是
super method
sub meth
因此,即使超级类hello
中的meth
正在调用meth
,但实际上子类的meth
正在被调用。所以,方法调用不是词法意义上的!也就是说,即使看起来将调用超级类的meth,实际上它的子类的becoz子类实例首先调用了method
。在超类中使用meth
private时,为什么情况不同
您不能像编译器告诉您的那样重写私有方法。所以超级类唯一知道的meth()是它自己的。
您不能重写私有方法,因为它是类的内部方法,所以它的子类甚至不知道它的超级私有方法的存在。
问题内容: 我创建了一个用于显示工具提示的指令: 对应功能: 应用于此: 这是我观点的一部分,由拥有者的控制器处理 为什么必须调用才能将更改应用到,该更改是早先声明和初始化的? 问题答案: 因为附加到事件的回调超出了angular的范围;angular不知道该函数何时运行/结束,因此摘要循环永远不会运行。 调用或告诉angular更新绑定并触发任何手表。
问题内容: 我应该开发一个简单的SFTP。 一切都进行得很好,直到我(在本例中)没有编写全部为止。可以请我解释一下,为什么系统挂在我身上吗? 服务器端: 客户端: 问题答案: 您的循环一直运行到流结束,但是对等方永远不会关闭套接字。该协议似乎要求打开套接字以供其他命令使用,因此您必须调整它的这一部分以包括一个长度字前缀,以便您知道要复制多少字节。 问题不是关于不写所有字节,而是关于阻塞in 。
问题内容: 我正在尝试通过以下方式将日期范围划分为各个日期: 而且我不知道为什么不起作用,因为日期仍然相同,所以循环变得无限。 问题答案: plusDays不会改变原始的,您必须分配结果:
问题内容: 我刚浏览了Android开发者网站,刷新了活动生命周期,在每个代码示例中,超类方法旁边都有一条注释,上面写着“始终先调用超类方法”。 尽管这在创建半周期(onCreate,onStart和onResume)中是有意义的,但对于销毁半周期的正确过程是什么,我还是有些困惑:onPause,onStop,onDestroy。 首先销毁实例专用资源,然后销毁实例专用资源可能依赖的超类资源,这是
我试着玩pyplay,我可以在屏幕上画一个精灵的形象。我试图通过改变x和y变量来移动WASD中的精灵。 当我运行程序时,精灵会绘制,但当我按正确的键时不会移动。 编辑:我添加了一个更新方法,moveY参数说它不在那里,尽管它显然在那里,为什么? 这是代码:
问题内容: 资源: 编译: 错误: 我正在使用,代码o / p表示无论如何都进行了var arg调用。 问题答案: 这是因为和不完全匹配。 首先,您必须将强制转换为(如果要将字符串作为单独的参数传递)或(如果只需要一个作为数组的参数)。 为什么这是警告而不是错误?向后兼容。在引入varargs之前,您已经使用了这些方法,并且在将方法升级为使用varargs之后,针对该方法编译的代码仍应以相同的方式