当前位置: 技术问答>java相关
方法重载后为什么还是调用了父类的方法?
来源: 互联网 发布时间:2015-10-30
本文导语: ZipOutputStream类有一个方法: private static byte[] getUTF8Bytes(String s) { ... ... ... ... } 我写的类继承了 public class ZipOutputStreamEx extends ZipOutputStream 并重载的方法: public static byte[] getUTF8Bytes(String s) { System.out.println("note...
ZipOutputStream类有一个方法:
private static byte[] getUTF8Bytes(String s) {
... ...
... ...
}
我写的类继承了
public class ZipOutputStreamEx extends ZipOutputStream
并重载的方法:
public static byte[] getUTF8Bytes(String s) {
System.out.println("note from w");
return s.getBytes();
}
但是调用后好象没有执行新的方法,并没有输出note from w
private static byte[] getUTF8Bytes(String s) {
... ...
... ...
}
我写的类继承了
public class ZipOutputStreamEx extends ZipOutputStream
并重载的方法:
public static byte[] getUTF8Bytes(String s) {
System.out.println("note from w");
return s.getBytes();
}
但是调用后好象没有执行新的方法,并没有输出note from w
|
private
这是重载吗?
这是重载吗?
|
private访问属性其子类是不允许访问吧。
|
你这不算是重载(overload)啊:
设计重载是为了根据不同参数类型和不同参数个数来调用不同方法.
private static byte[] getUTF8Bytes(String s)
public static byte[] getUTF8Bytes(String s)
这时情况比较特殊, 父类的private 成员method 没有被子类继承.(or you can say subclass cannot access the superclass' private method)
于是, 你相当于重写(override)了这个方法. 这种override API 的方法是选择性支持的.
当你生成一个对象来调用这个方法时
ZipOutputStreamEx zip = new ZipOutputStreamEx();
zip.getUTF8Bytes("hello"); //调用的重写方法;选择性支持,有执行的可能.
你好好检查一下你的程序代码.
设计重载是为了根据不同参数类型和不同参数个数来调用不同方法.
private static byte[] getUTF8Bytes(String s)
public static byte[] getUTF8Bytes(String s)
这时情况比较特殊, 父类的private 成员method 没有被子类继承.(or you can say subclass cannot access the superclass' private method)
于是, 你相当于重写(override)了这个方法. 这种override API 的方法是选择性支持的.
当你生成一个对象来调用这个方法时
ZipOutputStreamEx zip = new ZipOutputStreamEx();
zip.getUTF8Bytes("hello"); //调用的重写方法;选择性支持,有执行的可能.
你好好检查一下你的程序代码.
|
这个没有重载阿