在软件构造实验3中,我们多次用到了继承的思想
继承是面向对象的开发过程中的一个非常重要的概念,通过继承,我们可以使用之前定义的成员方法和成员变量,经过简单的程序编码就可以在已有类的基础上增加新的功能。
Java程序设计语言通过继承机制,在现有类的基础上定义一个新的类,并在原有类的基础上添加新的方法或修改原有方法,从而提高编程效率、减少错误概率。
继承是通过关键字extends来声明的,其格式为:
[修饰符] class 类名 extends 父类名
如
public class bird extends animal {
}
bird类继承了animal类,即animal类是bird类的直接父类(或直接超类),bird是animal类的直接子类。
我们简单的编写animal类,使它作为bird类的父类
public class animal {
public boolean live;
public String name;
public final boolean canFly;
public animal(boolean canFly)
{
this.canFly = canFly;
}
public void getName()
{
System.out.println(name);
}
}
我们用eclipse创建子类时,在指定包、类名的同时,还可以指定继承的超类(父类)和实现的接口。
我们可以在Superclass中输入或选择我们要继承的父类。
eclipse自动为我们生成了代码。
package P1;
public class bird extends animal {
}
此时,eclipse向我们报错,因为我们在父类中写了一个构造方法,eclipse提醒我们为子类添加构造方法。
我们选择让eclipse自动添加构造方法,得到了如下代码。
package P1;
public class bird extends animal {
public bird(boolean canFly) {
super(canFly);
// TODO Auto-generated constructor stub
}
}
我们编写一个program来验证一下,子类bird是否继承了animal的成员方法与成员变量
package P1;
public class program {
public static void main(String[] args) {
// TODO Auto-generated method stub
bird eagle = new bird(true);
eagle.name = "Eagle";
eagle.live = true;
eagle.getName();
}
}
运行结果如下