*abstract和final关键字不可以同时修饰一个类,因为final关键字使的类不可被继承,而abstract修饰的类如果不能被继承那就没有任何意义。两个关键字有冲突所以不可以同时修饰一个类
*抽象方法:
1.由abstract修饰
2.抽象方法只有定义,没有方法体
3.只有方法的定义,没有具体的实现(连{ }都没有)
*抽象类
1.由abstract修饰
2.包含抽象方法的类必须是抽象类
不包含抽象方法的类也可以声明为抽象类-------没有任何意义
3.抽象类不能被实例化(抽象类不能被实例化(new对象),但是可以被声明引用)
FlyingObject o =new FlyingObject();//编译错误
FlyingObject[] oo = new FlyingObject[3];//正确----new的是FlyingObject数组对象
FlyingObject f;//正确
4.抽象类是需要被继承的,派生类需要:
4.1)重写抽象类中的所有抽象方法-----变不完整为完整
4.2)也声明为抽象类-----------------一般不建议这么做
5.抽象类的意义:
5.1)封装派生类共有的属性和行为---------为了实现代码复用
5.2)可以为所有派生类提供工艺的类型-----为了实现向上造型
5.3)可以包含抽象方法,抽象方法存在的意义就是为了给所有派生类提供统一入口(就是可以点出来)
派生类的具体行为不同,但是入口是一致的