抽象方法的概念

抽象方法主要指不能具体实现的方法并且使用abstract关键字修饰 也就是没有方法体
具体格式如下:
访问权限 abstract 返回值类型 方法名(形参列表);
public abstract void cry();

抽象类的概念

  • 抽象类主要指不能具体实例化的类并且使用abstract关键字修饰,也就是不能创建对象

    抽象类和抽象方法的关系

  • 抽象类中可以有成员变量 构造方法 成员方法;

  • 抽象类中可以没有抽象方法,也可以有抽象方法
  • 拥有抽象方法的了必须是抽象类,因此真正意义上的抽象类应该是具有抽象方法并且使用abstract关键字修饰的类

    抽象的实际意义

    抽象类的实际意义不在于创建对象而在于被继承—-运用多态
    当一个类继承抽象类后必须重写抽象方法,否则该类也变成抽象类,也就是抽象类对子类具有强制性和规范性,因此叫做模板设计模式.
    抽象方法 - 图1

    开发经验

    在以后的开发中推荐使用多态的格式,此时父类类型引用直接调用的所有方法一定是父类中拥有的方法,若以后更换子类时,只需要将new关键字后面的子类类型修改而其它地方无需改变就可以立即生效,从而提高了代码的可维护性和可扩展性
    该方式的缺点:父类引用不能直接调用子类独有的方法,若调用则需要强制类型转换

    抽象类的应用

    银行有定期账户和活期账户.继承自账户类 账户类中: ```java package com.lagou.task09;

/**

  • @author lijing
  • @date 2020/9/21 15:08
  • @description */ public abstract class Account { private double money;
  1. public Account() {
  2. }
  3. public Account(double money) {
  4. this.money = money;
  5. }
  6. public double getMoney() {
  7. return money;
  8. }
  9. public void setMoney(double money) {
  10. if(money>0){
  11. this.money = money;
  12. }else{
  13. System.out.println("不合理");
  14. }
  15. }
  16. public abstract double getLixi();

}

  1. ```java
  2. package com.lagou.task09;
  3. /**
  4. * @author lijing
  5. * @date 2020/9/21 15:13
  6. * @description
  7. */
  8. public class FixeAccount extends Account{
  9. public FixeAccount(int i) {
  10. super(i);//表示调用父类的有参构造方法
  11. //setMoney(i);
  12. }
  13. @Override
  14. public double getLixi() {
  15. //利息=本金*利率*时间
  16. return getMoney()*0.03*1;
  17. }
  18. public static void main(String[] args) {
  19. //1.声明Account类型的引用指向子类类型的对象,形成多态
  20. Account acc=new FixeAccount(1000);
  21. double res = acc.getLixi();
  22. System.out.println("计算的利息是:"+res);//30.0
  23. }
  24. }

笔试考点

private和abstract关键字不能共同修饰一个方法
final和abstract关键字不能共同修饰一个方法
static 和abstract关键字不能共同修饰一个方法