前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小朋友学Java(7):继承

小朋友学Java(7):继承

作者头像
海天一树
发布2018-04-17 12:01:44
6240
发布2018-04-17 12:01:44
举报
文章被收录于专栏:海天一树海天一树

在学习Java的继承之前,可以先复习一下C++的继承: http://www.jianshu.com/p/bc9b7ddb141c

一、定义

继承就是子类(派生类)继承父类(基类)的特征和行为,使得子类对象(实例)具有与父类相同的行为。

二、生活中的继承

牛和羊属于食草动物类,老虎和狼属于食肉动物类。 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,即子类 is a 父类。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别。所以子类除了具有父类的一般特性外,也会具有自身的特性。

三、继承的语法格式

C++中的继承格式为 class 子类:访问权限修饰符 父类 比如class Dog : public Animal

Java中的继承格式为class 子类 extends 父类 比如class Dog extends Animal

extends表示扩展的意思,这个词表明了子类的父类的扩展

四、为什么需要继承

接下来我们通过实例来说明这个需求。 开发动物类,其中动物分别为猫和老鼠,要求如下: 老鼠:属性(姓名,id),方法(吃,睡,自我介绍,挖洞) 猫:属性(姓名,id),方法(吃,睡,自我介绍,抓老鼠)

编写Mouse类:

代码语言:javascript
复制
public class Mouse { 
    private String name; 
    public Mouse(String name){ 
        this.name = name; 
    }
    public void introduce() { 
        System.out.println("Hello, everybody! My name is  " + name + ".");      
    } 
    public void eat() { 
        System.out.println("I am eating"); 
}
    public void sleep() {
        System.out.println("I am is sleeping");
    }
    public void dig() {
        System.out.println("I am digging hole");
    }
}

编写Cat类:

代码语言:javascript
复制
public class Cat { 
    private String name; 
    public Cat(String name){ 
        this.name = name; 
    }
    public void introduce() { 
        System.out.println("Hello, everybody! My name is  " + name + ".");      
    } 
    public void eat() { 
        System.out.println("I am eating"); 
}
    public void sleep() {
        System.out.println("I am is sleeping");
    }
    public void catchMouse() {
        System.out.println("I am catching mouse");
    }
}

从这两段代码可以看出来,代码存在重复了,导致后果就是代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错,比如要修改introduce方法中的内容,就得修改每个类中的introduce方法),所以要从根本上解决这两段代码的问题,就需要继承,将两段代码中相同的部分提取出来组成一个父类Animal

五、继承例子

新建四个文件:Animal.java, Mouse.java, Cat.java, AnimalTest.java

Animal.java中的内容为:

代码语言:javascript
复制
public class Animal{ 
    private String name; 
    public Animal(String name) { 
        this.name = name; 
    }
    public void introduce() { 
        System.out.println("Hello, everybody! My name is  " + name + ".");         
    } 
    public void eat() { 
        System.out.println("I am eating"); 
    }
    public void sleep() {
        System.out.println("I am sleeping");
    }
}

Mouse.java中的内容:

代码语言:javascript
复制
public class Mouse extends Animal { 
    public Mouse(String name) {
        super(name);
    }
    public void dig() {
        System.out.println("I am digging hole");
    }
}

Cat.java中的内容:

代码语言:javascript
复制
public class Cat extends Animal { 
    public Cat(String name) {
        super(name);
    }
    public void catchMouse() {
        System.out.println("I am catching mouse");
    }
}

AnimalTest.java中的内容:

代码语言:javascript
复制
public class AnimalTest { 
    public static void main(String[] args) {
        Mouse mouse = new Mouse("Jerry");
        mouse.introduce();
        mouse.eat();
        mouse.sleep();
        mouse.dig();
        System.out.println();
        Cat cat = new Cat("Tom");
        cat.introduce();
        cat.eat();
        cat.sleep();
        cat.catchMouse();
    }
}

运行结果:

分析: Java中父类的构造方法不能被子类继承,但可以被子类调用。 Mouse类和Cat类中的构造函数里的super(name)语句,就是调用父类的构造方法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海天一树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、定义
  • 二、生活中的继承
  • 三、继承的语法格式
  • 四、为什么需要继承
  • 五、继承例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档