Java学习之路——抽象类与抽象方法

Java学习之路——抽象类与抽象方法

概述

抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。具体地说,抽象就是人们在实践的基础上,对于丰富的感性材料通过去粗取精、去伪存真、由此及彼、由表及里的加工制作,形成概念、判断、推理等思维形式,以反映事物的本质和规律的方法。

在 Java 程序中的抽象类与抽象方法:

  • 抽象方法只需要声明而不需要实现,抽象方法只声明返回的数据类型、方法名称和所需的参数,没有方法体;
  • 抽象类是不能被实例化的,只能被子类继承。继承的子类必须实现抽象类中定义的抽象方法。

抽象的目的是把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象方法。

拥有抽象方法的类就是抽象类(但抽象类中也可以不包含抽象方法),抽象类要使用abstract关键字声明。

示例

// 定义一个抽象类
abstract class Demo0 {
    
    
    //普通方法
    public void fun(){
    
    
        System.out.println("普通方法");
    }

    //抽象方法
    public abstract void eat();
}

// 子类继承抽象类
class Demo1 extends Demo0 {
    
    
    // 重写抽象方法
    @Override
    public void eat() {
    
    
        System.out.println("eat() 方法已经实现");
    }
}

总结

抽象类:

  • 抽象类不能被实例化。因为抽象类中方法未具体化,这是一种不完整的类,所以直接实例化也就没有意义了;
  • 抽象类的使用必须有子类,使用 extends 继承,一个子类只能继承一个抽象类;
  • 子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为 abstract 类。)
  • 抽象类可以不包含抽象方法,但如果类中包含抽象方法,就必须将该类声明为抽象类;
  • 抽象类不能使用 final 声明,因为抽象类必须有子类,而 final 定义的类不能有子类;
  • 由于抽象类里会存在一些属性,那么抽象类中一定存在构造方法,其存在目的是为了属性的初始化。并且子类对象实例化的时候,依然满足先执行父类构造,再执行子类构造的顺序;
  • 外部抽象类不允许使用static声明,而内部的抽象类可以使用static声明。

抽象方法:

  • 抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰;
  • **抽象方法必须为 public 或者 protected **(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为 public 。

猜你喜欢

转载自blog.csdn.net/qq_43580193/article/details/112631685
今日推荐