Java抽象类和接口
来源:互联网 发布:内蒙古出版社 知乎 编辑:程序博客网 时间:2024/05/22 07:57
前天老师讲解类的继承、抽象类和接口突然被启发,以前总是用抽象类、接口、和继承什么的,没有思考过,为什么要这么设计,于是就上网查了查,做了做总结。
抽象类
首先,Java的三大特性:封装、继承、和多态,抽象类这里肯定会用到继承的,那么把类变成抽象类有什么作用呢?
**1.可以完成所有子类的共性行为。
2.可以规定子类必须完成的行为。**
下面我们来看看如果父类不是抽象类会出现什么样子:
class A { public A() { System.out.println("A"); }}class B extends A { public B() { System.out.println("B"); }}class C extends B{ public C() { System.out.println("C"); }}class D extends C{ public D() { System.out.println("D"); }}测试类:public class Test { public static void main(String [] args) { new D(); /** * 此处只想生成一个对象 * 实际确把ABCD四个对象都放在内存了 */ }}
如果不使用抽象类的话,太消耗内存,很明显是不行的,。
那么抽象类到底是什么呢?通俗来讲,抽象类是对类的抽象,它不需要定义详细的动作执行过程,只需要定义这个动作就可以了,这也是抽象类存在的必要性之一。例如:一个动物类,动物都有eat方法(动作),但是动物的子类,老虎和猫,老虎是大口吃,猫是小口吃,这就不归它管了。
抽象类的特征:
1.抽象类不能被实例化。 一个动物你能怎么实例化,一颗植物也不能实例化。不可能说:我实例化一个动物,到底什么动物啊?2.抽象方法必须被子类重写。 抽象方法就是从子类集合中提取出来的,也就是说,你继承这个类,你就必须满足要求。3.一个类包含抽象方法,那么这个类一定是抽象方法。
接口
为什么要设计接口呢?接口就是对象方法特征的集合。接口是被实现的,类是被继承的。继承只能是一个,接口可以实现多个。例如:
一个抽象类动物,它的子类有猫和猪,他们都继承动物类。再来定义一个上树动作(方法),猫类可以实现这个动作,但是猪就不能实现这个动作,所以上树的动作是不可以放在抽象类动物中的。这里上树的这个动作就可以当做一个接口。但是这里的接口中的上树动作却没有详细定义的。猫实现上树接口是爬上去的,鸡实现上树接口是飞上去的。(接口是一个特殊形式的抽象类)
特征:实现接口的具体类必须要实现接口中的所有方法和属性(怎么实现你随便)。实现接口的抽象类会把未实现的方法,改成抽象方法。
抽象类和接口的区别
从实际对象来看:
抽象类:从对象中提取出他们的属性和方法,制作出的一个集合。(发现)
这里的方法是每个子类都必须实现的,或者说,都共有的,但是没有详细执行过程。
接口:指定一个动作,如果有哪个对象可以完成这个动作就可以实现。(创造)
这里的动作同样没有详细执行过程。比如说:飞这个动作,蚊子可以飞,超人也可以飞。但是他们飞的动作是不一
样的,蚊子是翅膀飞,超人是超能力飞。
抽象角度: 抽象类是对类的抽象。 接口是对行为的抽象。共同点: 1.都不能被实例化。 2.都包含抽象方法。
- Java 抽象类,抽象方法和接口
- Java抽象类和抽象方法、接口
- Java接口和抽象类
- java接口和抽象类
- java 接口和抽象类
- java接口和抽象类
- JAVA抽象类和接口
- java抽象类和接口
- java抽象类和接口
- Java:抽象类和接口
- java接口和抽象类
- Java 抽象类和接口
- JAVA抽象类和接口
- java抽象类和接口
- java接口和抽象类
- JAVA抽象类和接口
- Java抽象类和接口
- java 抽象类和接口
- 偶然间做起题来--仅为纪念
- TCP连接端口的状态
- 93. Restore IP Addresses
- HDU 5344 MZL's xor(异或运算)
- 组合数学之母函数问题
- Java抽象类和接口
- xhprof(PHP性能分析工具)
- pyqt 用py2exe打包出错的解决办法
- POJ 1753 Flip Game
- iOS程序启动的时候隐藏状态栏,启动完成之后显示状态栏
- centos yum安装mysql
- 苹果iPhone6 Plus坠海两月被找回
- hdoj 2717 Catch That Cow
- string的erase方法