大话面向对象(三):继承
作者:强哥   类别:Java开发    日期:2017-12-08 16:58:22    阅读:2541 次   消耗积分:0 分

在了解继承的具体实现之前,请首先确保你已经对“理解面向对象”节中的基本概念有所了解。继承中有4个子概念首先需要知道的:父类,子类,重写,扩展。先简单介绍一下这几个概念:

1) 父类:用来被子类继承的称作父类,比如在此我们把“门”定义成一个父类

2) 子类:继承父类的类称作子类,在引我们可以把“防盗门”定义成一个子类

3) 重写:父类“门”有一个方法叫做openDoor(),而由于“防盗门”打开的方式不一样,我们需要在子类中重新实现openDoor()这个方法,此时子类中的openDoor()便重写了父类中的openDoor()。

4) 扩展:父类“门”只有openDoor()和closeDoor()两个方法,而对于“防盗门”这个子类,还存在一个方法叫做“按门铃”,此时子类“防盗门”便可以新增一个方法pressBell(),这就是“扩展”。

与上节一样,我们仍然使用Door这个类来作为父类,里面不做任何修改,代码如下:

public class Door {

    private int height;      // 定义属性height为私有变量类型, 仅在Door类中可调用

    public int width;    // 定义属性width为公用变量类型, 可在Door的实例中调用

 

    // 定义方法openDoor

    public void openDoor() {

        System.out.println("Door is open now ...");

    }

 

    // 定义方法closeDoor

    public void closeDoor() {

        System.out.println("Door is close now ...");

    }

 

    // 经典的setter和getter方法

    public void setHeight(int height) {

        // 本处的this.height为类的私有变量height, 等号后的height为参数height的值

        this.height = height;

    }

 

    public int getHeight() {

        // getter方法, 用于返回值

        return this.height;

    }

}


接着我们创建一个子类叫SafeDoor,里面什么都不做,只做一下继承,代码如下(注意关键字extends)

public class SafeDoor extends Door{

    // 此类不做任何实现,只继承自Door

}


在这种情况下,实例化SafeDoor这个类,此类将会拥有所有Door类中的作用域为public和protected的方法和属性(特别注意一下private修饰的方法和属性将不能被继承),现在我们实例化SafeDoor并调用相应的方法:

public class MyDoor {

    public static void main(String[] args) {

        SafeDoor safeDoor = new SafeDoor();

        safeDoor.openDoor();

        safeDoor.closeDoor();

        safeDoor.setHeight(1000);

        System.out.println("Height is: " + safeDoor.getHeight());

        safeDoor.width = 500;

        System.out.println("Width is: " + safeDoor.width);  

    }

}

 

运行,输出结果为:

Door is open now ...

Door is close now ...

Height is: 1000

Width is: 500

 

我们可以看到,虽然SafeDoor类中什么也没有,但是所有Door类中的方法和属性均可用于SafeDoor这个类的实例,这便是继承的强大之外,这是面向对象中很强大的一个功能,通过这样的方式我们便可很容易地实现重用。

 

最后,我们为SafeDoor这个类添加一个新的方法扩展其功能,方法名为pressBell():

 

public void pressBell() {

    System.out.println("Door's bell is pressed ...");

}

 

这个新的方法便是一个扩展,这样SafeDoor不仅可以使用Door的方法,也可以扩展自己的方法和属性,使面向对象这种程序设计思想轻易实现重用性和扩展性。

 


蜗牛学院,只为成就更好的你!

你!敢不敢!用你三个月的时间,换你不一样的未来!

赶快关注蜗牛学院官方微信,了解更多信息吧!

20181009_153045_341.jpg

   
版权所有,转载本站文章请注明出处:蜗牛笔记, http://www.woniunote.com/article/34
上一篇: 学习健身两不误,来蜗牛学院就对了
下一篇: 抓住五月的尾巴,蜗牛迎来了24期新学员
提示:登录后添加有效评论可享受积分哦!
最新文章
    最多阅读
      特别推荐
      回到顶部