【面向对象】继承的八种分类

继承可以分为:特殊化继承规范化继承构造继承泛化继承扩展继承限制继承变体继承合并继承

1、特殊化继承
从一般到特殊,在程序中表现为既有实现的方法,也有未实现的接口。
例如:
从马派生出白马:从抽象的马,到具有具体颜色(白色)的马,增加了颜色这个属性。
从人派生出男人:从抽象的人,到具有具体性别(男性)的人,增加了性别这个属性。
2、规范化继承
在程序中表现为只在基类中定义某些方法而不具体实现。
例如,从GraphicalObject派生出Ball,Square

public abstract  Class GraphicalObject{
...
double getArea(){}
}

public  Class Ball extends GraphicalObject{
...
double Pi=3.14159;
double radius;
double getArea(){return Pi*radius*radius; }
}
public  Class Square extends GraphicalObject{
...
double length;
double getArea(){return length*length; }
}

3、构造继承
从原有的事物中抽取或者修改一部分属性从而构成一个新事物。在程序中表现为修改原有方法的一些参数列表或者改变一些用作类的接口名。
例如:
从树派生出独木舟,保留了材质等属性,修改了形状的属性。
从堆栈派生出队列,修改了pop() push()等方法,栈顶和栈底变成了队首和队尾。
从风扇派生出螺旋桨,保留了运动的方法,修改了形状的属性。
4、泛化继承
不完全等同于特殊化继承的反面。是从基类扩展一部分行为,形成更加泛化的抽象。在程序中表现为对原来存在的功能进行修改或者扩展。
例如:

从Window派生出了Colored_Window。
public Class Window{
...
double size;
setSize(){...}
getSize(){...}
}
public Class Colored_Window extends Window{
...
String color;
setColor(String str){...};
getColor(String str){...};
//扩展了查看颜色和设置颜色两个行为
}

5、扩展继承
仅仅是在派生类中增加了新的行为,而不改变原来积累的任何属性。在程序中表现为,只增加变量或者方法,而不修改(重写)原有的方法。
例如,从织布到制作彩色布(多了染色)
注意:不能改变原来的任何属性!
6、限制继承
派生类的行为要比基类少。在程序里表现为属性或者方法减少。
例如:
从双向队列到堆栈,限制了删除和修改只能在一端。
7、变体继承
从两个事物提炼出一个新事物(可能会删除一部分)。在程序中表现为从两个类的公共代码中提炼出一个抽象类。
例如:
机械鼠标和轨迹球派生出一种带有轨迹球的按键鼠标,具有轨迹球和机械按键,但又不完全是机械鼠标或者轨迹球的一种设备。
8、合并继承
同时具有两种事物的全部属性。
例如:
从老师和学生中派生出助教,助教是个“完整的“老师,也是个”完整的“学生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值