抽象类
Posted 旗正飘飘 马正萧萧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类相关的知识,希望对你有一定的参考价值。
为什么引入抽象类?
抽象类 : 几何图形class Figure
子类: 矩形class Rectangle 圆class Circle三角形class Triangle 等... 属性: 曲边 ,直边, 几条边, 求面积, 求周长...
如果没有抽象类,父类提取出来的共性必须是唯一的,实现的,稳定的,那么求面积,求周长,都不能提取,当一个方法的功能是处理几何图形,参数是Figure f .当接收一个图形时,求其周长还要事先把 f 向下转型,很是麻烦.但是如果引入抽象类,可以把求周长的公式提取出来,但是不必实现,当然也无法实现.这样就不用向下转型了.增加了灵活性,而且子类继承了抽象类,必须把抽象类的所有抽象方法必须全实现,才能new实例,这样抽象类带来了另外一个好处:模板,规定子类必须要干什么!
抽象类原则
(1)抽象类用abstract修饰,抽象类不能new出实体
(2)抽象类提取出的共性,能实现的直接实现,不能实现的用abstract修饰,不必实现,由子类继承重写
(3)抽象类应该尽可能提取最多的共性,不用在乎能不能实现.
(4)抽象类不能new出实体,就是用来且必须被继承的,继承者必须重写其全部的抽象方法,才能new出实体,否则,继承者也是个抽象类.
(5)abstract修饰的类被继承才有意义,abstract修饰的方法被重写才能new出实体,而final修饰的类不能被继承,方法不能被重写,所以abstract和final不能同时使用.
(6)private修饰的方法子类无法触及,所以private和abstract也不通用.
(7)抽象类也有构造器,但是这个构造器并不是为了new出对象,而是给继承者的构造器调用的.
抽象方法和普通方法 形式上的区别: public abstruct void abstructFun(); public void fun() {}
以上是关于抽象类的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用
设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)