Java学习21--abstract抽象类

abstract抽象类

在Java中,abstract 是一个关键字,用于定义抽象类abstract class或抽象方法abstract method。abstract class是一种特殊的class,它不能用来建立具体的object,即不能实例化对象。abstract class通常用作其他类的基类,这些child class会提供abstract class中声明的abstract method的具体实现。

换言之,abstract抽象类就是搭建大框架用的,各个method具体怎么执行可以不管。先把大结构弄出来再说。

例如 abstract 一个人{
abstract 脑袋method{具体怎么构造脑袋method,让别人去写吧};
abstract躯干method{具体怎么完成躯干method,让别人去写吧};
abstract四肢method{具体怎么完成四肢method,让别人去写吧};
method{非abstract method method具体实现如下: 手需要XX个骨头神经元这样连接...};
abstract脚method{具体怎么完成脚method,让别人去写吧};

}

以下是关于Java abstract class的几个关键点:

  • abstract method:abstract class中可以包含abstract method(使用 abstract 关键字定义的class),也可以包含non-abstract method(即具有方法体的method)。
  • abstract method没有方法体,只有方法签名。child class必须提供abstract method的实现,除非child class本身也是abstract class。

public abstract class AbstractClass {  

    public abstract void abstractMethod(); // 抽象方法  

  

    public void nonAbstractMethod() {  

        // 非抽象方法的实现  

    }  

}
  • abstract class 实例化:由于abstract method不能实例化(不能建立新的object对象),因此你不能使用 new 关键字来创建abstract class的object。abstract class只能作为其他class的基class使用。

AbstractClass obj = new AbstractClass(); // 错误,不能实例化抽象类
  • 继承抽象类:任何child class 都可以继承一个abstract class,除非这个child class是final的。如果child class不是abstract的,那么它必须提供abstract class中所有abstract method的实现。

public class SubClass extends AbstractClass {  

    @Override  

    public void abstractMethod() {  

        // 提供抽象方法的实现  

    }  

}
抽象类中的字段:抽象类可以包含Field(字段),这些字段Variable可以是实例字段(非静态字段)或静态字段。子类可以访问这些字段,就像它们访问普通类的字段一样。

==抽象类与接口==:虽然抽象类和接口都不能用来创建具体object,并且都可以定义abstract method,但它们之间有一些重要的区别。
抽象类可以包含字段和method的具体步骤,而接口不能。
此外,一个class可以实现多个接口,但一个子class只能extends一个abstract class(Java不支持多重继承)。
  • 抽象类的用途:抽象类通常用于定义一种行为模式,让子类来遵循这种模式。通过抽象类,你可以定义一些通用的属性和方法,并在需要时让子类来提供特定的实现。使用抽象类可以实现代码的重用和模块化,同时保持代码的灵活性和可扩展性。

特点总结:

  • 子类需要extends abstract class抽象类,所以只能单方向单继承(接口可以多继承)
  • abstract class不能用来new object,其内部想做的method要么自己实现,要么靠子类去实现
  • abstract class里面可以写普通的method并且自己完成其内容
  • abstract method必须写在abstract class中

你可能感兴趣的:(java,学习,开发语言)