想问问关于private和final定义方法

jz8261054 2008-04-30 02:44:42
class WithFinals {
// Identical to "private" alone:
private final void f() {
System.out.println("WithFinals.f()");
}

// Also automatically "final":
private void g() {
System.out.println("WithFinals.g()");
}
}

class OverridingPrivate extends WithFinals {
private final void f() {
System.out.println("OverridingPrivate.f()");
}

private void g() {
System.out.println("OverridingPrivate.g()");
}
}
}
...全文
333 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoxiongok 2008-04-30
  • 打赏
  • 举报
回复
覆盖吧
pastom 2008-04-30
  • 打赏
  • 举报
回复
子类不能继承父类中private的成员和方法!
jz8261054 2008-04-30
  • 打赏
  • 举报
回复
这个问题到此为止!!
gejixin 2008-04-30
  • 打赏
  • 举报
回复
由于子类在继承的时候,看不到父类的private方法,所以在继承时你有定义了一个相同的函数,那么这个具有相同函数名的方法对子类来说是一个完全新的方法。
他们没有联系,只是名称相同而已。
边城狂人 2008-04-30
  • 打赏
  • 举报
回复
同意KKK2007美女
jz8261054 2008-04-30
  • 打赏
  • 举报
回复
2楼的观点有点错误!

子类的两个方法不是从父类继承下来的,是子类里面自己的两个方法,只不过和父类里面的方法名,参数都一样罢了!
jiaping108 2008-04-30
  • 打赏
  • 举报
回复
你这不是重写,可以说你的OverridingPrivate里面的两个方法跟WithFinals 的两个方法没有丝毫关系~

class OverridingPrivate extends WithFinals 从WithFinals 根本没有继承到那两个方法,因为那两个
方法是私有的,你把WithFinals 中的的private final void f()换成是public final void f()或protected
后 OverridingPrivate 才能继承到这个方法,这时才能测试你能不能重写,单显然,final方法是不能被重写的~
jz8261054 2008-04-30
  • 打赏
  • 举报
回复
tij 4th 书上的例子!误导了我!

pirvate方法是不能被重写的,private方法在别的类中根本就触及不到!
杜琦 2008-04-30
  • 打赏
  • 举报
回复
up!
KKK2007 2008-04-30
  • 打赏
  • 举报
回复
子类的和父类的是两个不同的函数,父类的f,g还是被子类继承了,而子了一又定义了相同的函数,但是父类的
f,g函数还是存在在子类里的,并且是私有的,所以不能被子类访问
在你这里并没有重写父类,、只不过在子类里又定义了个相同名的
jz8261054 2008-04-30
  • 打赏
  • 举报
回复
可以重写private方法吗?

加了final了,为什么还可以重写?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧