「这是我参与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全栈架构师】维护者,欢迎关注阅读交流。