覆盖和重写的区别?

gaojava 2010-05-05 11:32:29

class Father{
static void print(){
System.out.println ("in father method");
}
}
class Child extends Father{
static void print(){
System.out.println ("in child method");
}
}

class Test{
public static void main (String[] args) {
Father f =new Child();
f.print();
}
}


这个叫覆盖,我知道静态方法不能被重写,但是这种写法和重写一摸一样,覆盖和重写区别是什么?
...全文
1690 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzflzcl 2012-03-21
  • 打赏
  • 举报
回复
31楼基本对,99.9%的情况下二者是一个意思
wendellup 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 keeya0416 的回复:]
再加点东西

Java code

public class Test {
public static void main(String[] args) {
A a = new B(); //父类引用,子类对象; 同名成员变量父类无法引用,static方法也是如此。
System.out.println(a.i); //父类的变量
……
[/Quote]

java中子类怎么隐藏父类的函数?。。
perfecta 2011-10-19
  • 打赏
  • 举报
回复
建议把这个帖子删了,不要误导,百度的时候,看着这个就郁闷
slc1989 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keeya0416 的回复:]
重写有多态
覆盖没多态
方法调用时
重写方法决定于对象类型
覆盖的方法决定于引用类型
[/Quote]

刚引用错了饿。。。。 一楼说的太对了
slc1989 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 gaojava 的回复:]
Java code


class Father{
static void print(){
System.out.println ("in father method");
}
}
class Child extends Father{
static void print(){
System.out.print……
[/Quote]

果然强大 顶!
slc1989 2011-08-03
  • 打赏
  • 举报
回复
我看的书是《21天学通java》,上面写“父类的静态方法可以被子类的静态方法覆盖”,静态方法不是明明不能被重写的么,如果覆盖==重写的话,那就不知道到底是书错了还是我的理解有问题了,我是菜鸟,求指导。。。。
codinghom 2010-11-11
  • 打赏
  • 举报
回复
哎呀 我也懵了……
codinghom 2010-11-11
  • 打赏
  • 举报
回复
1楼的话很好很强大
zhuyouyong 2010-05-06
  • 打赏
  • 举报
回复
终于弄明白了,学习了
guanye007 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 c5153000 的回复:]
覆盖==重写 叫法不同罢了
父类中有个print()方法,子类里面再一个print()方法,这样子类对父类方法的重写。
重载是指在“一个类”中,你写了多个方法,他们的方法名相同,但是参数不同,这样算是重载。比如你在一个类中写了print()和print(String a)两个同名函数。

我也是才学没多久 不知道理解对不的啊
[/Quote]
说的很对
name88888 2010-05-06
  • 打赏
  • 举报
回复
覆盖和重写应该是一个意思吧,现在正在学习中还不了解
不善^ 2010-05-05
  • 打赏
  • 举报
回复
覆盖 就是重写啊
还有一个重载 这个和 重写不是一个概念
zfq642773391 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 c5153000 的回复:]
覆盖==重写 叫法不同罢了
父类中有个print()方法,子类里面再一个print()方法,这样子类对父类方法的重写。
重载是指在“一个类”中,你写了多个方法,他们的方法名相同,但是参数不同,这样算是重载。比如你在一个类中写了print()和print(String a)两个同名函数。

我也是才学没多久 不知道理解对不的啊
[/Quote]
就是这样
重写就是覆盖,两个一个意思
猫儿爷爷 2010-05-05
  • 打赏
  • 举报
回复
覆盖==重写 叫法不同罢了
父类中有个print()方法,子类里面再一个print()方法,这样子类对父类方法的重写。
重载是指在“一个类”中,你写了多个方法,他们的方法名相同,但是参数不同,这样算是重载。比如你在一个类中写了print()和print(String a)两个同名函数。

我也是才学没多久 不知道理解对不的啊
gaojava 2010-05-05
  • 打赏
  • 举报
回复
能不能举个例子?
猫儿爷爷 2010-05-05
  • 打赏
  • 举报
回复
不同的 参数 类型 相同的是 方法名字都一样的
keeya0416 2010-05-05
  • 打赏
  • 举报
回复
重写有多态
覆盖没多态
方法调用时
重写方法决定于对象类型
覆盖的方法决定于引用类型
a_liang_me 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 c5153000 的回复:]
覆盖==重写 叫法不同罢了
父类中有个print()方法,子类里面再一个print()方法,这样子类对父类方法的重写。
重载是指在“一个类”中,你写了多个方法,他们的方法名相同,但是参数不同,这样算是重载。比如你在一个类中写了print()和print(String a)两个同名函数。

我也是才学没多久 不知道理解对不的啊
[/Quote]
赞同
kiban410 2010-05-05
  • 打赏
  • 举报
回复
根本就是一回事,
静态方法因为不能覆盖,所以叫重写
gao0926 2010-05-05
  • 打赏
  • 举报
回复
重载:同一个类中方法名相同,参数列表不同.即为重载(overloading);
覆盖:是子类和超类中由同名的方法,且参数列表相同,子类中的方法覆盖超类中的方法.
加载更多回复(21)

62,614

社区成员

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

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