您的位置:首页 > 编程语言 > Java开发

Java抽象类和接口

2015-08-06 20:06 218 查看
前天老师讲解类的继承、抽象类和接口突然被启发,以前总是用抽象类、接口、和继承什么的,没有思考过,为什么要这么设计,于是就上网查了查,做了做总结。

抽象类

首先,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.都包含抽象方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: