Java重写是指子类继承父类在子类中重写父类中存在的方法,是用来屏蔽父类与子类不同的一种方法,即子类可以使用父类中存在的方法而不用在子类中重写代码,实现了代码的复用,但是有些方法是与父类不同的,所以要冲写。再重写中,要求访问修饰符相同,返回类型相同,和方法名和参数个数,顺序都相同。这属于java的一种多态,而重写还可以写成这样
public class Mao{
public void run(){
System.out.println(“会跑”);
}
public Object say(){
System.out.println(“mimi”);
return null;
}
}
public class Hu extendsMao{
public String say(){
System.out.println(“houhou”);
return null;
}
}
他们返回类型怎么会不一样呢??应为他们属于多态的一种,如果定义父类或接口为参数则可以传入子类或接口的实现类,返回亦然。因为Object是所有类的父类所以重写可以返回任意引用类型数据但不可以是基本数据类型如int如果非要返回int则返回类型定义为Integer。为了更清楚还可以写成
public class Mao{
public void run(){
System.out.println(“会跑”);
}
public List say(){
System.out.println(“mimi”);
return null;
}
}
public class Hu extendsMao{
Public ArrayList say(){
System.out.println(“houhou”);
return null;
}
}
可以编译通过
public class Mao{
Public void run(){
System.out.println(“会跑”);
}
public ArrayList say(){
System.out.println(“mimi”);
return null;
}
}
Public class Hu extendsMao{
Public List say(){
System.out.println(“houhou”);
Return null;
}
}
编译通不过
有什么不对的请多指教……