源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java基础教程之继承详解

  • 时间:2020-10-02 02:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java基础教程之继承详解
继承(inheritance)是面向对象的重要概念。继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式。我们在[url=http://www.1sucai.cn/article/54551.htm]组合(composition)[/url]中看到,组合是重复调用对象的功能接口。我们将看到,继承可以重复利用已有的类的定义。 [b]类的继承[/b] 我们之前定义类的时候,都是从头开始,详细的定义该类的每一个成员。比如下面的Human类:
[url=http://www.1sucai.cn/article/54548.htm]构造方法与方法重载[/url]中已经提到,Java是同时通过方法名和参数列表来判断所要调用的方法的。方法是由方法名和参数列表共同决定的。上述问题中,如果只是方法名相同,而参数列表不同,那么两个方法会同时呈现到接口,不会给我们造成困扰。外部调用时,Java会根据提供的参数,来决定使用哪个方法 (方法重载)。 如果方法名和参数列表都相同呢? 在衍生层时,我们还可以通过super和this来确定是哪一个方法。而在外部时,我们呈现的只是统一接口,所以无法同时提供两个方法。这种情况下,Java会呈现衍生层的方法,而不是基层的方法。 这种机制叫做方法覆盖(method overriding)。方法覆盖可以被很好的利用,用于修改基类成员的方法。比如,在衍生层,也就是定义Woman时,可以修改基类提供的breath()方法:
[url=http://www.1sucai.cn/article/54548.htm]构造方法与方法重载[/url] 比如下面的程序中,Human类有一个构造方法:
[u]复制代码[/u] 代码如下:
class Human {       /**      * constructor      */     public Human(int h)     {         this.height = h;     }     /**      * accessor      */     public int getHeight()     {        return this.height;     }     /**      * mutator      */     public void growHeight(int h)     {         this.height = this.height + h;     }     /**      * breath      */     public void breath()     {         System.out.println("hu...hu...");     }     private int height; }
衍生类Woman类的定义及其构造方法:
[u]复制代码[/u] 代码如下:
class Woman extends Human {     /**      * constructor      */     public Woman(int h)     {         super(h); // base class constructor         System.out.println("Hello, Pandora!");     }     /**      * new method      */     public Human giveBirth()     {         System.out.println("Give birth");         return (new Human(20));     }     /**      * override Human.breath()      */     public void breath()     {         super.breath();         System.out.println("su...");     } }
[b]总结[/b] extends method overriding protected super.member, super()
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部