Java第三课 - Java的继承详解

Java第三课 - Java的继承详解

继承是什么

我们总是听说Java的三大特性,封装、继承、多态。感觉总是那么高大上。其实,这些概念,掰碎了来理解,就是现实生活中很常见的现象。类似于今天我们要说的继承,也是如此。

首先,来看看官方的定义。(来自百度百科)

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

定义太复杂了,太正式了。我们先来举个栗子。

首先,我们建立两个类,分别是:XiaoMing、XiaoHong。

public class XiaoMing {
    private String age;
    private String height;
    private String run;

    // 忽略getter、setter方法

}
public class XiaoHong {
    private String age;
    private String height;
    private String swim;

    // 忽略getter、setter方法

}

首先,XiaoMing和XiaoHong都拥有age、height两个属性。但是不同之处在于,xiaoMing喜欢run,xiaoHong喜欢swim。

也就是说,他们之间,有相同之处,又有不同之处。如果又新增XiaoWang、XiaoZhang、等等,那是否需要每次都写上age、height,这两个字段呢?那岂不是太麻烦了。

所以,这个时候,继承的作用就显现出来了。

我们再建一个类:Person类。

我们把age、height这两个属性,给放到Person类里面,并同时提供getter、setter方法。如下。

public class Person {
    private String age;
    private String height;

    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getHeight() {
        return height;
    }
    public void setHeight(String height) {
        this.height = height;
    }
}

类建好了,那么现在,如何简化我们的XiaoMing以及XiaoHong呢?

很简单,使用extends关键字就好。如下。XiaoMing类就变成下面这个样子了。

public class XiaoMing extends Person{
    private String run;
}

那么,我们要如何使用呢?也很简单。首先,我们创建XIaoMing对象。接着,通过get/set方法,对对象的属性进行设置以及获取。

public static void main(String[] args) {

    XiaoMing xiaoMing = new XiaoMing();

    xiaoMing.setAge("11");
    xiaoMing.setHeight("150");

    System.out.println(xiaoMing.getAge());
    System.out.println(xiaoMing.getHeight());

}

打印的结果如下。

11
150

为什么要继承

根据上面的例子,我们来总结一下,为什么要使用继承。

首先,减少代码量是最直观的。我们不需要每一个类都去写上age、height属性,不需要每一个字段都写上get/set方法,简直是偷懒患者的福音呀。

其次,是修改方便。如果有一天,我们认为需要为他们每一个人都添加上一个爱好的字段,只需要在Person类里面添加:

private String hobby;

这样就可以了。不需要每一个类都去修改,大幅度提升了工作效率。再也不需要熬夜加班了!

实际使用例子

事实上,我们在实际工作中,在建立数据库对象,也是可以这么做的。

例如,我们的数据库表中,总会有这么几个固定的字段:

  • create_by
  • create_time
  • update_by
  • update_time
  • valid_status

在这里插入图片描述

对于这些字段,我们就可以将它们抽出来,建立一个:BaseEntity的实体类。同时,为它们提供对外的get/set方法,这样在使用的时候,只需要继承BaseEntity,就能够获得这几个字段,提升了效率,也让代码更加简洁,更有利于今后的修改。

public class BaseEntity {

    private String createBy;
    private Date createTime;
    private String updateBy;
    private Date updateTime;
    private Integer validStatus;

}

结语

好了,关于继承的内容,就讲到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值