J2SE--重写和重载

         java的学习中我们经常会遇到方法的重写和重载。这篇博客将介绍java中的重写和重载。


重载(overload)

       百度百科:在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。

    个人理解:其实意思就是说在一个类中有多个相同名称的方法,但是参数不同,不同的方式可以是个数不同、可以是类型不同、或者是两者均不同均可。返回类型是否相同没有任何妨碍。外界在调用这个类的的方法,要让我们知道是调用的那个方法,能够将这些方法区分开。


二 重写(overwrite/override)

       百度百科: 通常,派生类 继承基类 的方法,因此,在调用对象继承方法的时候,调用和执行的是基类的实现.但是,有时需要对派生类中的继承方法有不同的实现. 例如,假设动物类存在"跑"的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要"重新编写"基类中的方法.
个人理解:重写是以继承为前提的。重写的是神马?重写的是父类的方法,既然是重写别人的方法,那么方法名、参数和返回类型就必须相同。为什么要使用重写?子类继承父类,也就意味着子类拥有了父类的所有方法和属性。但是子类对父类的这个方法并不是很满意,想要进行修改,怎么办?那就使用重写了。
 我们在调用子类的方法的时候,程序先调用父类的这个方法,如果子类重写此方法则执行子类的方法,如果子类没有此方法(前提是父类有),则执行父类原来的方法。总之,子类继承了父类中所有的属性和方法。
注意:1 重写方法的必须和被重写方法具有相同方法名称、参数列表和返回类型。
          2 重写父类方法不能使用比重写方法更严格的方法权限

三重写重载示例


代码
class Father{ 
    public void func1(){ 
        func2(); 
    } 
    //这是父类中的func2()方法,因为下面的子类中重写了该方法 
    //所以在父类类型的引用中调用时,这个方法将不再有效 
    //取而代之的是将调用子类中重写的func2()方法 
    public void func2(){ 
        System.out.println("AAA"); 
    } 
    public void func3(){
    	System.out.println("fulei");
    }
} 
  
class Child extends Father{ 

    //func1(int i)是对func1()方法的一个重载,func1()继承自父类,虽然程序中没有显示。
    public void func1(int i){ 
        System.out.println("BBB"); 
    } 
    
    //子类重写父类func2方法。
    public void func2(){ 
        System.out.println("CCC"); 
    } 
   
} 
  
public class Test { 
    public static void main(String[] args) { 
        Father child = new Child(); 
        //Child littlebaby = new Father();
        child.func1();      //结果CCC   //调用子类中继承的方法
        child.func2();      //结果CCC   //子类重写父类方法
        Father baba = new Father();
        baba.func2();       //结果AAA    //实例化父类,直接调用父类的方法 
        Child baby = new Child();       
        baby.func1(68);      //结果BBB   //调用子类中的方法
        baby.func1();        //结果CCC   //调用子类中的重写的方法
        baby.func3();        //结果fulei  //调用子类继承的方法。
    } 
} 

四总结

       重载必须是在一个类中的的多个方法;重写必须以继承为前提,也就是说最少2个类。重载是一个类中多态性的表现,重写是父类和子类之间的一种多态性的表现。重载在编译时检测,重写在执行时执行。
       在看完了J2SE视频之后,真切的感受到了java是一种面向对象的语言。一切的根源都来自于"Object"。都是从它继承而来。多态性是面向对象语言的特点,而重写是实现多态的基础。
  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值