
Java入门教程-面向对象三大特性之继承的基础概念1
1、继承的概念
继承是 java 面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
生活中的继承
兔子和羊属于食草动物,狮子和老虎属于食肉动物。
食草动物和食肉动物又是属于动物。
所有的继承需要符合的关系:is-a,父类更通用,子类更具体。
虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。
2、继承的格式
在 Java 中通过关键字 extends 来声明一个类是从另一个类继承而来的,一般格式如下:
class 父类 {
}
class 子类 extends 父类 {
}
3、为什么继承
接下来我们通过实例的说明这个需求。
开发动物类,其中动物分别为狗和猫,要求如下:
狗:属性(姓名,颜色),方法(吃,叫)
猫:属性(姓名,颜色),方法(吃,叫)
class Dog{
private String name;
private String color;
public void eat() {
System.out.println(this.name + "正在吃...");
}
public void cry() {
System.out.println(this.name + "正在叫...");
}
}
class Cat {
private String name;
private String color;
public void eat() {
System.out.println(this.name + "正在吃...");
}
public void cry() {
System.out.println(this.name + "正在叫...");
}
}
从这两段代码可以看出来,代码存在重复了,导致后果就是代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错),所以要从根本上解决这两段代码的问题,就需要继承,将两段代码中相同的部分提取出来组成 一个父类:
class Animal {
private String name;
private String color;
public Animal(String name, String color) {
this.name = name;
this.color = color;
}
public void eat() {
System.out.println(this.name + "正在吃...");
}
public void cry() {
System.out.println(this.name + "正在叫...");
}
}
这个Animal类就可以作为一个父类,然后狗类和猫类继承这个类之后,就具有父类当中的属性和方法,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码) 继承之后的代码:
狗类
class Dog extends Animal{
public Dog(String name , String color) {
super(name, color);
}
}
猫类
class Cat extends Animal {
public Cat(String name , String color) {
super(name, color);
}
}