湖南长沙益阳网站建设,wordpress 友情链接 插件,o2o系统软件,上海建设行业协会官网目录 
3.1 方法重写举例 
Override使用说明#xff1a; 
3.2 方法重写的要求 
3.3 小结#xff1a;方法的重载与重写 
#xff08;1#xff09;同一个类中 
#xff08;2#xff09;父子类中 
3.4 练习 父类的所有方法子类都会继承#xff0c;但是当某个方法被继承到子类…目录 
3.1 方法重写举例 
Override使用说明 
3.2 方法重写的要求 
3.3 小结方法的重载与重写 
1同一个类中 
2父子类中 
3.4 练习 父类的所有方法子类都会继承但是当某个方法被继承到子类之后子类觉得父类原来的实现不适合于自己当前的类该怎么办呢子类可以对从父类中继承来的方法进行改造我们称为方法的重写 (override、overwrite)。也称为方法的重置、覆盖。 
在程序执行时子类的方法将覆盖父类的方法。 
3.1 方法重写举例 
比如新的手机增加来电显示头像的功能代码如下 
package com.atguigu.inherited.method;public class Phone {public void sendMessage(){System.out.println(发短信);}public void call(){System.out.println(打电话);}public void showNum(){System.out.println(来电显示号码);}
} 
package com.atguigu.inherited.method;//SmartPhone智能手机
public class SmartPhone extends Phone{//重写父类的来电显示功能的方法Overridepublic void showNum(){//来电显示姓名和图片功能System.out.println(显示来电姓名);System.out.println(显示头像);}//重写父类的通话功能的方法Overridepublic void call() {System.out.println(语音通话 或 视频通话);}
}package com.atguigu.inherited.method;public class TestOverride {public static void main(String[] args) {// 创建子类对象SmartPhone sp  new SmartPhone();// 调用父类继承而来的方法sp.call();// 调用子类重写的方法sp.showNum();}
}Override使用说明 写在方法上面用来检测是不是满足重写方法的要求。这个注解就算不写只要满足要求也是正确的方法覆盖重写。建议保留这样编译器可以帮助我们检查格式另外也可以让阅读源代码的程序员清晰的知道这是一个重写的方法。 3.2 方法重写的要求 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表。  子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型。例如Student  Person。 注意如果返回值类型是基本数据类型和void那么必须是相同 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限。public  protected  缺省  private注意① 父类私有方法不能重写 ② 跨包的父类缺省的方法也不能重写 子类方法抛出的异常不能大于父类被重写方法的异常
此外子类与父类中同名同参数的方法必须同时声明为非static的(即为重写)或者同时声明为static的不是重写。因为static方法是属于类的子类无法覆盖父类的方法。 
3.3 小结方法的重载与重写 
方法的重载方法名相同形参列表不同。不看返回值类型。 
方法的重写见上面。 
1同一个类中 
package com.atguigu.inherited.method;public class TestOverload {public int max(int a, int b){return a  b ? a : b;}public double max(double a, double b){return a  b ? a : b;}public int max(int a, int b,int c){return max(max(a,b),c);}
}2父子类中 
package com.atguigu.inherited.method;public class TestOverloadOverride {public static void main(String[] args) {Son s  new Son();s.method(1);//只有一个形式的method方法Daughter d  new Daughter();d.method(1);d.method(1,2);//有两个形式的method方法}
}class Father{public void method(int i){System.out.println(Father.method);}
}
class Son extends Father{public void method(int i){//重写System.out.println(Son.method);}
}
class Daughter extends Father{public void method(int i,int j){//重载System.out.println(Daughter.method);}
}3.4 练习 
**练习1**如果现在父类的一个方法定义成private访问权限在子类中将此方法声明为default访问权限那么这样还叫重写吗 (NO) 
**练习2**修改继承内容的练习2中定义的类Kids在Kids中重新定义employeed()方法覆盖父类ManKind中定义的employeed()方法输出“Kids should study and no job.”