关于private方法重写 想问下,private方法到底能不能重写?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你觉得private方法重写有意义吗?方法是为了给外部程序调用才写的,private方法外部程序无法调用.因此如果要重写是不可以的.但特殊情况本类里可以声明为private方法,只可以在本类里调用. 当然可以啦public class TestByteToString extends TestByteToStringBase { public static void main(String[] args) { System.out.println(getId()); } private int getId() { return 2; }}class TestByteToStringBase { private int getId() { return 1; }} 技术上是可以(象java2000_net 那样),但从设计上来看,就没有这个必要啦。 哪里重写了...private本来就是属于类的两个private只是在他们分别的类里起作用,根本和重写没有关系 方法重写(overiding method) 子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。就是子类覆盖父类的方法了。 父类private的方法, 对子类来说是不可见的, 也就不存在方法重写. 在java中,private 方法是不能重写的,因为private 方法默认是final的! 同意楼上,private 是默认的final private方法不可被继承,自然不可被重写 private 方法只属于本类,不能被继承,所以谈不上重写了。 同意 在java中,private 方法是不能重写的,因为private 方法默认是final的! "重写"private方法,有时候在实战中必不得已还是要用到的。一切皆有可能。 重写的前提是要能继承过来 然后才是重写如果在子类里又写了一个同名的private方法那只是子类自己的 和父类的同名private没有任何关系 父类private方法根本就不可继承不可见的又何谈重写? 重写的前提是要能继承过来 子类的同名private方法只是他自己的 和 父类的private方法没任何关系 父类的private方法根本就不可继承不可见的又何谈重写? 晕 以为LZ要重新private 关键字... To2楼:TestByteToStringBase tb=new TestByteToString();tb.getId();//这句根本无法调用,如果换成public或protected就可以调用了.输出的是子类的方法,是2. 我觉得也不能重写的....可是我看了tij上面可以重写.....让我觉得很莫名其妙.private是可以重写的...但是没的意义....一般情况下是不重写private方法的.... 晕,你编译看看不久更加深印象了吗?我同意上面几层楼的说法,我也测试的代码,确实编译时,没有提示 @Override 参数警告也就是他们说的,这不叫 Override 啦!呵呵! 概念性错误,虽然看上去好像很正确。 public class TestByteToString extends TestByteToStringBase { public static void main(String[] args) throws Exception {// new TestByteToString().getId(); } private int getId() { // 这里显示的是本地方法没有使用,而不是 @Override 警告 return 2; } @Override ///// 如果不写这个,在打开编译开关时,显示需要@Override警告 public String toString() { return null; }}class TestByteToStringBase { private int getId() { return 1; } public void mm() { getId(); };} 2楼举的例子里2个getId()是没有任何关系的 只是他两个的方法名称相同而已 因为TestByteToString 不能继承private 的方法的 同意ahliyo的说法,是两个方法而已 方法重写(overiding method) 子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。就是子类覆盖父类的方法了。 父类private的方法, 对子类来说是不可见的, 也就不存在方法重写.就是上面讲的这样。子类在写一个同样名字同参数的方法,那也是另一个方法,并不是重写父类的那个方法 BigInteger的其他实现 怎么让某个类不能使用某个方法? 关天JAVA中用CANVAS类画图 read 关于读卡器与WEB应用(小弟的前程问题) 这是什么意思? 关于类路径的问题? 高级技术群,欢迎一起探讨8990357 谁能给我一个模拟控制电梯运行的源程序 简单问题 为什么JDBC做批量更新速度很慢? 有 struts API 中文问档 给我发个 谢谢!!!!
public class TestByteToString extends TestByteToStringBase {
public static void main(String[] args) {
System.out.println(getId());
} private int getId() {
return 2;
}
}class TestByteToStringBase {
private int getId() {
return 1;
}
}
private本来就是属于类的
两个private只是在他们分别的类里起作用,根本和重写没有关系
TestByteToStringBase tb=new TestByteToString();
tb.getId();//这句根本无法调用,如果换成public或protected就可以调用了.输出的是子类的方法,是2.
也就是他们说的,这不叫 Override 啦!呵呵! 概念性错误,虽然看上去好像很正确。 public class TestByteToString extends TestByteToStringBase {
public static void main(String[] args) throws Exception {
// new TestByteToString().getId();
} private int getId() { // 这里显示的是本地方法没有使用,而不是 @Override 警告
return 2;
} @Override ///// 如果不写这个,在打开编译开关时,显示需要@Override警告
public String toString() {
return null;
}
}class TestByteToStringBase {
private int getId() {
return 1;
} public void mm() {
getId();
};
}
就是上面讲的这样。子类在写一个同样名字同参数的方法,那也是另一个方法,并不是重写父类的那个方法