由于多个派生类继承了同个方法却行为方法不一样,所以要用abstract修饰的方法去进行强调

方法的覆盖(重写)

抽象方法的大概结构:

1.由abstract修饰

2.只有方法定义,没有具体的方法体,连{}大括号也没有(所以是个不完整方法)

public abstract void move();

如果是一个类有抽象方法,那么此类也要用abstract修饰。但是也是个不完整类,不能实例化的

(也就是不能创建对象)。所以要成为超类被继承。

 abstract class A(){
    public abstract void a();
}
    

使用抽象类的注意事项:

1.不能实例化(创建对象)

2.可以声明类型的,如数组对象

A(是抽象类)

错误的:A a=new A();


可以的:A a;
       A [] a=new A();
       A a[];

继承了抽象类的派生类:

第一种:把不完整的方法重写为完整的

class B extends A(){
    public void a(){
      x=10+10;
}    
}

第二种:还是改为抽象类,又给另外类继承

abstract class B extends A(){
    abstract public void a();
     
}

抽象类的意义:

保证向上转型时,通过超类的引用来调出来那个特定的方法名

有一个特定的标准,强制派生类重写抽象方法

功能有:

封装共有属性和行为----代码复用

为所有的派生类提供统一的类型-------向上转型

派生类的行为不同,但入口是一致的,所以提供了一个统一的入口