10.1 继承的概念

有一个矩形类别Rectangle,很明显它需要两个属性一个长度一个高度。
public class Rectangle{
    private double length;
    private double height;
}
然后有一个正方形类别Square,只需要一个属性,行为和长方形一样:
public class Square{
    private double length;
}
这两个类是有联系的。我们知道正方形肯定是矩形,而矩形就不一定是正方形了。我们可以这样说正方形是矩形的一种。如果我们要在代码里面表达这个意思,那么就需要这样修改Square。
public class Square extends Rectangle{
}
这里我们引入一个新的关键字extends,意思是继承、扩展,表达Square继承了Rectangle。 假如A是B的一种,那么用java代码就这么表示A extends B,术语就是A继承B 我们一般称继承的类是子类,被继承的类是父类。

练习题

  • 完成下列练习
    1.已知三个类“早餐”,“午餐”和“油条” (6分) [填空]
    public class                           {
    }
    2.以下哪种不能构成继承关系 (2分) [选择]
    A.
    B. 猫 extends 动物
    C. 圆形 extends 形状
    D. 食物 extends 面包
    E. Java extends 编程语言
    3.完成下面的继承关系 (6分) [填空]
    已知两个类“马”和“白马”
    public class                           {
    }
  • 判断下面的类的继承关系,是否符合逻辑
    1. (2分) [判断]
    猫 m=new 动物();
    
    2. (2分) [判断]
    形状 s=new 圆形();
    
    3. (2分) [判断]
    面包 m=new 食物();
    
    4. (2分) [判断]
    鸟类 w=new 鹦鹉();
    
    5. (2分) [判断]
    电器 d=new 电视机();
    
    6.子类是父类的一种,但是父类并不是子类的一种 [阅读]
    例如白马是一种马,马不是白马的一种。在代码里面这个关系是这样体现的。
    r声明的类型是Rectangle,实际类型是Square。
    但是反过来写,是非法的:

    这里的法则就是:抽象 a=new 具体()
    //错误写法;
    Square r=new Rectangle();//正确写法;
    Rectangle r=new Square();
    
  • 编程题,注意需要两个类
    1.定义一个动物类Animal,再定义一个猫类Cat继承它 (10分) [Java多类]
    Animal类(不需要任何属性和方法):
                Cat类(不需要任何属性和方法):