抽象方法和抽象类

*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)可以包含抽象方法,抽象方法存在的意义就是为了给所有派生类提供统一入口(就是可以点出来)
派生类的具体行为不同,但是入口是一致的

欢迎大佬指点。
原文地址:https://www.cnblogs.com/tietouwa/p/13448741.html