JAVA基础(一)---JAVA四大特性之一抽象

来源:互联网 发布:网络之重临巅峰txt下载 编辑:程序博客网 时间:2024/06/07 01:27

一、抽象类

(1)概念

JAVA是面向对象语言,所有的对象都可以用类(class)来实现,反过来说并不是所有的类都是描述对象的,如果一个类没有足够的信息来描述一个具体的对象,那么我们就称这个类是抽象类。

(2)解释

抽象类描述的是对现实中的一系列广义上相同,但具体到单个时就不同的事物,我们没有办法完全描述这一系列的事物,我们把这种现象称为抽象。比如:汽车就可以当抽象处理,不同车型有着共同的特性,但“汽车”无法描述不同车型的不同特性,所以可以把汽车当成一个抽象对象,当我们描述小轿车的时候就可以继承“汽车”的这个抽象类。

(3)规范

抽象类必须用abstract关键字修饰,抽象类的方法没有方法体(例如没有{})则该方法必须用abstract修饰



由以上信息可以得出:有抽象方法的类一定是抽象类,但是抽象类不一定有抽象方法。

(4)特点

1.抽象方法必须声明为public或protected以便于子类继承;

2.抽象类不可实例化;

3.不同类继承抽象类,必须实现父类的抽象方法,如果不实现那么子类也必须是抽象类,因为普通类不允许有抽象方法(来自父类的也不行)

二、接口

(1)概念

说了抽象类就不能不说接口,接口是抽象的抽象,它不允许有自己的默认方法体,接口是一个特殊形式的抽象类,想到抽象类就会联系到继承,但是单继承的规则满足不了我们日常的业务及技术需求,这时候我们就会用到接口,一个类可以实现多个接口。

(2)解释

一个典型例子就是“司机”。谁可以当司机?谁都可以,只要领取了驾照。所以我不管你是学生,白领、蓝领还是老板,只要有驾照就是司机。

(3)规范

1.用interface申明类;

2.不允许有方法体;

(4)特点

1.变量只能是public static final;

2.接口中的方法只能被public abstract修饰;

三、抽象类与接口的区别

1.抽象类可以有方法的实现,接口不可以;

2.抽象类定义变量与普通类无异,而接口只能用 final static修饰;

3.接口中不允许有静态代码块和静态方法,而接口可以;

4.抽象类单继承,接口多实现

5.抽象是对事物的抽象,把相同的特性抽象成单独的类,不同的类去继承这个抽象类以实现对不同事物的具体描述。而接口是对事物行为的抽象。例如:大千世界中,任何一个物体都可以是一个对象,例如电脑和人,虽然他们的属性不同,但都有一个共通的行为,思考。只不过人可以做复杂的思考,而电脑只能做简单的思考,这样,人和电脑就是两个抽象,而对于共同的行为,思考,这可以定义一个接口Think,包含一个方法think,具有该思考行为的则实现该接口,不具有的则不实现

四、总结

通过上面的描述已经把抽象类和接口描述的很清楚了,在实际项目中还是要多用接口毕竟回避了单继承的局限性。如果大家觉得有什么疑惑,可以留言相互探讨。