一个示例理解Java中继承

427 阅读3分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

前言

  很对入门Java后端开发的朋友,在刚接触到这门语言的时候,总是被各种各样的面向对象、抽象、继承等概念所困惑。那么在我们本文将根据简单明了的示例介绍一下Java中的继承相关知识

继承

  刚开始学习Java时候,都会熟悉一句话,Java是一门面向对象的语言。Java中面向对象的继承又是什么呢?可以将Java中的继承理解成分层级的概念,有上层级和子层级,子层级又作为父层级又有子层级,类似于一种多叉树的形式。并且继承就是子类继承父类的特征和行为,在Java中子类具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 父类也叫超类和基类。

特点:

  • 一个子类只能有一个父类,一个父可以有多个子类。单继承。
  • 提高了代码的复用性。
  • 子类可以直接访问父类中的非私有的属性和方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法。
  • 继承使用关键字extends来表示继承关系。
  • 缺点使用继承造成代码耦合性高,代码独立性差。

示例

  相信上面文字看了之后都很都疼,那么久用一个简单的类图来介绍。

  • Animal(动物):超类、父类、基类。所有的动物都有年龄、性别、是否是人工养殖还是野生的。
  • Duck(鸭子):子类,属于动物,鸭子继承了动物的基础属性,独有属性喙色,特有的行为游水、嘎嘎叫。
  • Fish(鱼):子类,属于动物,在水中的,可以吃的。
  • Dog(人类的朋友):子类,属于动物,可以看护,奔跑很快。
classDiagram
Animal <|-- Duck
Animal <|-- Fish
Animal <|-- Dog
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-String water
-canEat()
}
class Dog{
+bool nurse
+run()
}

代码实现

  父类Animal继承父类动物,包含两个属性age和gender。两个共有的方法isMammal()和mate()。

public class Animal{
    public int age;

    public String gender;

    public Animal(int age, String gender) {
        this.age = age;
        this.gender = gender;
    }

    public void isMammal(){};

    public void mate(){};
}

  子类Duck,包含属性beakColor。两个独有的方法swim()和quack()。



public class Duck extends Animal {

    public String beakColor;

    public Duck( String beakColor) {
        super();
        this.beakColor = beakColor;
    }

    public void swim(){};

    public void quack(){};
}


  子类Fish,包含属性water。独有的方法canEat()。


public class Fish extends Animal{

    public String water;

    public Fish( String water) {
        super();
        this.water = water;
    }

    public void canEat(){};

}

  子类Dog,包含属性nurse。独有的方法run()。


public class Dog extends Animal {
    public String nurse;

    public Dog( String nurse) {
        super();
        this.nurse = nurse;
    }

    public void run(){};

}

结语

  好了,以上就是Java中继承相关概念介绍,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

  作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。