抽象类的产生:
分析事物时,发现了共性的内容,就会出向上的抽取,就会发生一种特殊的情况,就是方法的功能,但方法的主体不同,这个时候也可以抽取,但只能抽取方法的声明,不抽取方法的主体,这就是一个抽象方法.
比如猫和狗都还是动物,都会叫,但他们的叫声不同,这个时候就可以只抽取叫这个方法出来,而不必写怎么叫,这个方法就是抽象方法.
抽象方法:
只有方法声明,而没有具体的方法.java中的抽象方法用abstract修饰.
方法名后面直接跟一个分号,而不是花括号
例如:Public abstract 返回类型 方法名(参数);
凡是没有方法体的方法必须使用关键字abstract修饰
凡是含有抽象方法的类就是抽象类
抽象类:
抽象类: 抽象类就是不能被实例化的类,通常作为一个类的最顶层的父类,用底层实现具 体的事物,顶层表示共性,包含抽象方法的类必须声明为抽象类,也可以不含有任 和抽象方法.
抽象类定义:abstract class 类名{};
抽象类的修饰符:必须为public或者protected,缺省的情况下默认为public
抽象类不能被实例化,不能new 原因: 如果可以new出来了,就可以调用方法,而抽象方 法没有主体,根本就没法运行
抽象类的使用:定义继承抽象类,将抽象方法进行重写,创建子类的对象.(如果子类没有重 写所有的父类抽象方法那么子类也是抽象方法)
特点
抽象类和抽象方法都必须要被abstract修饰
抽象类不一定有抽象方法()
抽象方法一定在抽象类中
不能new出抽象类的对象,但可以定义一个抽象类的引用(抽象类也可以实现多态)
只有重写了抽象类的所有抽象方法,器子类才能被穿件否则子类还是一个抽象类最后必 须有一个类来实现抽象方法
细节
抽象类可以没有抽象方法,有什么意义呢,不让这个类创建对象,方法可以直接让子类去 使用(适配器设计模式).
Abstract 不可以与paivate 共存 因为私有方法无法继承也就不存在覆盖.Final后面学 Static后面学
原文地址:http://blog.51cto.com/10760006/2156374