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类(不需要任何属性和方法):