订做网站,电子商务网站建设需求,怎么对网站标注做记号,品牌网站建设j小蝌蚪jok()方法在继承时候发生覆盖(重写)了吗#xff1f;发生了。在子类B中的ok()方法拥有父类方法相同的方法名和参数列表(signature)#xff0c;所以在这里发生了重写。调用B类对象的ok()方法会print b#xff0c;父类方法被覆盖。如果是重写了#xff0c;那定义一…ok()方法在继承时候发生覆盖(重写)了吗发生了。在子类B中的ok()方法拥有父类方法相同的方法名和参数列表(signature)所以在这里发生了重写。调用B类对象的ok()方法会print b父类方法被覆盖。如果是重写了那定义一个b类的对象还能再调用a类继承的ok()函数吗可以。方法就是利用super关键字。陆萌萌 的答案已经解释了。a类的ok()函数是在子类中隐藏了吗能告诉我覆盖和隐藏分别应该怎么用怎么写吗错误。我回答这个问题主要就是为了说明这个易混点。在Java中并没有隐藏的概念只有重载overload和重写override隐藏(redifine)是C中的概念网络上很多人将之带到了Java以为在Java中也有这样的区分。1.) 在C中同一类内相同函数名不同参数列表的函数为重载2.) 父类与子类间相同名字相同参数列表且父类函数有virtual标识符的为重写3.) 父类与子类间相同名字不同参数列表此时无论有无virtual标识符或者父类与子类间相同名字相同参数列表但是父类函数中没有virtual标识符则为隐藏或者说重定义redifine。Java中情况简化了许多。Java里没有virtual标识符按照上面三种情况划分1.) 同一类内相同方法名不同参数列表的方法为重载2.) 父类与子类间相同名字相同参数列表为重写(覆盖)这里与C的区别是Java中不需要有virtual标识符3.) 父类与子类间相同名字不同参数列表此时按C中的逻辑应该算是重定义(隐藏) 但是Java中没有隐藏的概念。在具体实现中父类中的函数会被继承下来和子类中的同名函数一起成为子类中的重载函数 。这个实现其实是与重载的定义相悖的因为重载要求必须是在同一类内的相同名字不同参数列表的方法而在这里重载跨越了父类与子类。以下为实际测试代码class a{public void ok(){system.out.println(a);}}class b extends a{public void ok(int c){system.out.println(b);}}class hello{public static void main(){a A new b();A.ok();A.ok(1);}}在Java中这里程序会输出a b。子类对象中隐式地包含了ok()ok(int c)两个重载方法。在C中同样结构的代码这里会出现编译错误因为父类中的ok()被子类的ok(int c)隐藏在子类对象中根本找不到ok()这个函数。相比较而言C规范更明确每种情况条分缕析Java在实现上虽然更简单方便但其实与重载的定义是相悖的。