abstract、virtual与override

来源:互联网 发布:手机淘宝怎么比价 编辑:程序博客网 时间:2024/05/17 03:30

前言

    软考学习过程中涉及到了设计模式,这个时候一些面向对象的概念要被复习到。提到面向对象,我就可以想到四个词:封装、继承、多态、抽象,而他们与abstract、virtual与override有什么关系呢?


基础

1.普通类,就是我们平常使用的class 类名,前面没有加修饰符就是普通类,他可以被实例化,如果我想要使用继承的话,就定义一个子类继承这个普通类,如果我想要重写的话,就在父类中写一个virtual方法,在子类用override重写这个方法即可。父类的方法可以不被重写。

2.抽象类,他就是在普通类前加一个abstract,格式:abstract class 类名,由此成为抽象类,他不可被实例化,里面的方法也是抽象的,也同样在方法名前加一个abstract,这个方法必须被重写。

什么用类,什么时候用抽象类呢?

当我们发现我们需要把这个类实例化的话,我就用普通类,当我们发现这个类我们根本就不需要被实例化,就抽象成抽象类。例如,人是一个大类,学生、教师、校长都继承这个人类,但是我们一般实例化都直接学生 对象名,而不会说人 对象名,所以这个时候这个人类根本就不需要被实例化,这个时候就把它抽象成一个抽象人类。

3.接口:实现这个接口。


扩展

为什么有的时候用父类,有的时候用接口,接口哪里比父类好?

1.继承的缺点,继承是子类完全继承父类的东西,但是有时候子类其实是不需要所有的东西的,造成类庞大冗余,而且完全继承也会带来一些危险的因素。

2.接口的优点:接口的话我们只需要定义一个接口,有需要就调这个接口即可!企鹅和大雁继承鸟,但是大雁会飞,企鹅不会飞,鸟不能有这个属性,大雁里写飞的方法,但是如果再出来鸽子,也要再写,这时候,写一个飞的接口,实现接口就好了。极大程度符合开放封闭要和依赖倒转原则!


原创粉丝点击